Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用默认参数调用重载方法_C#_Call_Parameter Passing - Fatal编程技术网

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

C# 使用默认参数调用重载方法,c#,call,parameter-passing,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个参数来调用第二个方法 我在生产代码中发现了类似的内容:/命名参数只是一个参数,具有默认值 foo(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个参数来调用第二个方法


我在生产代码中发现了类似的内容:/

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

foo(1,2,d:true); //will call the second method.
在呈现的代码中,您只需
重载
。请注意,参数(未命名)的数量不同

其他问题可以是:

我可以这样做吗

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

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

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

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

在呈现的代码中,您只需
重载
。请注意,参数(未命名)的数量不同

其他问题可以是:

我可以这样做吗

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

public void foo(int a, int b, bool c = false)
{
    //some other code
}
回答:不,你不能。因为,正如我所说,命名参数只是一个具有默认值的普通参数,所以它不会编译,因为已经有一个方法具有完全相同的签名