使用可选参数重载方法

时间:2016-08-30 05:12:56

标签: c# overloading

我有一个类如下,有两个重载方法。

git rebase --onto F' C G

如果我使用两个参数从另一个类调用方法Class A { public string x(string a, string b) { return "hello" + a + b; } public string x(string a, string b, string c = "bye") { return c + a + b; } } ,那么将执行哪个方法以及为什么?即,

x

我已经在我的控制台应用程序中对此进行了测试,并且执行了带有2个参数的方法。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:25)

使用命名参数和可选参数会影响重载解析:

  

如果两名候选人被判断为同样好,则优先选择a   候选者没有可选参数的参数   在通话中被省略了。这是一般的结果   对于拥有较少的候选人,重载决议的偏好   参数。

参考:MSDN

将调用含有2个参数string x(string a,string b)的上述规则方法。

注意:如果两个重载方法都有可选参数,那么编译器会给出编译时模糊错误。

答案 1 :(得分:4)

如果使用两个参数调用Method,则它将Method与两个Parameters一起使用。如果你打电话给三人,它会使用另一个。

答案 2 :(得分:0)

它将始终执行首先与精确的参数匹配的方法,在您的情况下它将执行:

可选参数方法优先级小于精确无参数的函数

public string x(string a, string b);