使用默认参数调用重载方法

时间:2013-02-20 12:27:39

标签: c# call parameter-passing

假设我们有两种方法

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个参数来调用第二种方法?

我在生产代码中找到了类似的内容:/

2 个答案:

答案 0 :(得分:1)

foo(1,2,d:true); //will call the second method.

答案 1 :(得分: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
}

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