使用可选参数重载方法

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

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 ,那么将执行哪个方法以及为什么? 即

 string result = new A().x("Fname", "Lname"); 

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

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

如果判断两个候选者同样好,则优先选择没有可选参数的候选者,该参数在调用中被省略。 这是对具有较少参数的候选者的重载分辨率的一般偏好的结果。

参考: MSDN


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

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

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

它将始终执行首先匹配完全没有参数的方法 ,在您的情况下它将执行:

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

 public string x(string a, string b);