考虑以下两种方法:
void Method(object obj) { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }
当我尝试打电话时:
Method(null);
在Visual Studio 2008 SP1中,我得到了 int[]。
为什么是这样?
考虑以下两种方法:
void Method(object obj) { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }
当我尝试打电话时:
Method(null);
在Visual Studio 2008 SP1中,我得到了 int[]。
为什么是这样?
它是重载分辨率的产物。你的论点, null,可以转换为两者 object 和 int[]。因此,编译器选择最具体的版本,因为 int[] 比具体更具体 object。
因为int []比object更具体,所以将忽略带有object-parameter的方法。如果要调用Method(“Some string”),将调用带有object-parameter的方法。