今天我发现了一些奇怪的事 我想知道为什么会这样:
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";
}
Run Code Online (Sandbox Code Playgroud)
想一想:调用ExampleMethod(3)时的结果是什么;
在我看来,它会导致不可预测的结果.在我的情况下,总是调用方法1.但是当我改变方法1的签名时,主方法称为方法2(当然).
我没想到会有这样的行为,我预料到"AmbiguousReferenceException"或者至少是编译器警告.