Z
ZHANK
编程在线教程C# 教程重载与可选参数
方法

重载与可选参数

方法重载、可选参数规则、命名参数调用、重载决议

重载与可选参数

方法重载让同一功能适配不同类型/参数。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);  // ❌ 编译错误——不知道该调用谁

// ✅ 选择:要么用可选参数,要么用重载,不要混用