相关疑难解决方法(0)

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

假设我有两个C#方法的重载版本:

void Method( TypeA a ) { }
void Method( TypeB b ) { }
Run Code Online (Sandbox Code Playgroud)

我用以下方法调用该方法:

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

调用该方法的哪个重载?我该怎么做才能确保调用特定的重载?

c# null overloading

34
推荐指数
3
解决办法
6360
查看次数

C#:为什么传递null会使用Object []进行重载(但仅在某些情况下)?

取消注释下面标记的行将导致堆栈溢出,因为重载解析有利于第二种方法.但是在第二种方法的循环中,代码路径采用第一次重载.

这里发生了什么?

private static void Main(string[] args) {

    var items = new Object[] { null };
    Test("test", items);

    Console.ReadKey(true);
}

public static void Test(String name, Object val) {
    Console.WriteLine(1);
}

public static void Test(String name, Object[] val) {
    Console.WriteLine(2);
    // Test(name, null); // uncommenting this line will cause a stackoverflow
    foreach (var v in val) {
        Test(name, v);
    }    
}
Run Code Online (Sandbox Code Playgroud)

c#

7
推荐指数
1
解决办法
99
查看次数

标签 统计

c# ×2

null ×1

overloading ×1