1

假设我们有两种方法

public void foo(int a, int b, bool c = false)
{
    //some code
}

public void foo(int a, int b, bool d, bool c = false)
{
    //some other code
}

当我调用foo(1,2,true)它时,它指的是第一种方法。有没有办法通过只传递 3 个参数来调用第二种方法?

我在生产代码中发现了类似的东西:/

4

2 回答 2

1
foo(1,2,d:true); //will call the second method.
于 2013-02-20T12:29:18.857 回答
0

命名参数只是一个参数,具有默认值。

提供的代码中,您只需overload. 注意参数(未命名)的数量是不同的。

其他问题可能是:

我可以做这样的事情吗?

public void foo(int a, int b, bool c)
{
    //some code
}

public void foo(int a, int b, bool c = false)
{
    //some other code
}

答:不,你不能。因为,正如我所说,命名参数只是一个具有默认值的普通参数,所以这不会编译,因为已经有一个签名完全相同的方法。

于 2013-02-20T12:32:42.847 回答