相关疑难解决方法(0)

方法重载决策系统如何决定在传递空值时调用哪个方法?

所以例如你有一个类似的类型:

public class EffectOptions
{
    public EffectOptions ( params object [ ] options ) {}

    public EffectOptions ( IEnumerable<object> options ) {}

    public EffectOptions ( string name ) {}

    public EffectOptions ( object owner ) {}

    public EffectOptions ( int count ) {}

    public EffectOptions ( Point point ) {}

}
Run Code Online (Sandbox Code Playgroud)

这里我只使用构造函数给出示例,但如果它们是类型本身的非构造方法,结果将是相同的,对吧?

所以当你这样做时:

EffectOptions options = new EffectOptions (null);
Run Code Online (Sandbox Code Playgroud)

会调用哪个构造函数,为什么?

我可以自己测试一下,但我想了解重载分辨率系统是如何工作的(不确定它是否被称为).

.net c# overload-resolution

35
推荐指数
2
解决办法
4338
查看次数

方法重载和空值

可能重复:
C#:将null传递给重载方法 - 调用哪个方法?

考虑以下两种方法:

void Method(object obj)  { Console.WriteLine("object"); }
void Method(int[] array) { Console.WriteLine("int[]"); }
Run Code Online (Sandbox Code Playgroud)

当我尝试打电话时:

Method(null);
Run Code Online (Sandbox Code Playgroud)

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

为什么是这样?

c#

11
推荐指数
1
解决办法
718
查看次数

标签 统计

c# ×2

.net ×1

overload-resolution ×1