<分区>
为什么 C# 编译器不会对具有默认参数的方法感到困惑?
下面代码中的SayHello()
可以引用:
- 问好()
- SayHello(字符串 arg1 = null)
- SayHello(字符串 arg1 = null, 字符串 arg2 = null)
- SayHello(字符串 arg1 = null,字符串 arg2 = null,字符串 arg3 = null)
但是这段代码编译成功,没有任何不明确的错误。
class Program
{
private static void SayHello()
{
Console.WriteLine("Hello 1");
return;
}
private static void SayHello(string arg1 = null)
{
Console.WriteLine("Hello 2");
return;
}
private static void SayHello(string arg1 = null, string arg2 = null)
{
Console.WriteLine("Hello 3");
return;
}
private static void SayHello(string arg1 = null, string arg2 = null, string arg3 = null)
{
Console.WriteLine("Hello 3");
return;
}
private static void Main(string[] args)
{
SayHello(); // SayHello() invoked, but SayHello(string arg1 = null) not invoked.
SayHello("arg1");
SayHello("arg1", "arg2", "arg3");
// Output is:
// Hello 1
// Hello 2
// Hello 3
return;
}
}