今天我发现了一些奇怪的东西。不知道为什么这样能行:
static void Main(string[] args)
{
Console.WriteLine(ExampleMethod(3));
Console.ReadKey();
}
public static string ExampleMethod(int required, params int[] optionalint)
{
return "ExampleMethod 2";
}
public static string ExampleMethod(int required, string optionalstr = "default string", int optionalint = 10)
{
return "ExampleMethod 1";
}
想一想:当你调用ExampleMethod(3)时,会得到什么结果?
在我看来,这会导致一个不可预测的结果。在我的情况下,总是调用了Method 1。但是当我改变了Method 1的签名时,Main Method调用了Method 2(当然)。
我没有预料到这样的行为,我期望会有一个"AmbiguousReferenceException"或至少是一个编译器警告。