考虑以下两种方法:
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的方法。