重载与可选参数
方法重载、可选参数规则、命名参数调用、重载决议
重载与可选参数
方法重载让同一功能适配不同类型/参数。C# 的可选参数和命名参数让重载需求大幅减少。
学完本章你将: 掌握方法重载规则、可选参数、命名参数调用。
方法重载
csharp
// 同名方法,参数不同
void Print(int x) => Console.WriteLine($"整数:{x}");
void Print(double x) => Console.WriteLine($"浮点:{x:F2}");
void Print(string s) => Console.WriteLine($"字符串:{s}");
void Print(string s, int n) => Console.WriteLine($"{s} {n}");
Print(42); // 整数:42
Print(3.14); // 浮点:3.14
Print("Hi"); // 字符串:Hi
可选参数
csharp
// 用可选参数替代多个重载
void Draw(
int x,
int y,
int size = 10,
string color = "black")
{
Console.WriteLine($"({x},{y}) size={size} color={color}");
}
Draw(0, 0); // 全部用默认值
Draw(5, 5, 20); // 覆盖 size
Draw(10, 10, color: "red"); // 命名参数跳到 color
重载的陷阱
csharp
// 可选参数和重载同时存在可能导致歧义
void F(int a, int b = 0) => Console.WriteLine("F1");
void F(int a) => Console.WriteLine("F2");
// F(5); // ❌ 编译错误——不知道该调用谁
// ✅ 选择:要么用可选参数,要么用重载,不要混用