【问题标题】:Method overloading and null value [duplicate]方法重载和空值
【发布时间】:2011-11-22 15:14:19
【问题描述】:

可能重复:
C#: Passing null to overloaded method - which method is called?

考虑这两种方法:

void Method(object obj)  { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }

当我尝试打电话时:

Method(null);

在 Visual Studio 2008 SP1 中,我得到 int[]

这是为什么?

【问题讨论】:

标签: c#


【解决方案1】:

它是重载决议的产物。您的论点null 可以转换为objectint[]。因此编译器会选择最具体的版本,因为int[]object 更具体。

【讨论】:

  • +1:“更具体”被定义为“int[] 可以隐式转换为object,但object 不能隐式转换为int[]。”
【解决方案2】:

因为 int[] 比 object 更具体,带有 object-parameter 的方法将被忽略。如果您调用 Method("Some string"),则将调用具有对象参数的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2013-10-27
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多