我有一个类如下,有两个重载方法。
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个参数的方法。有人可以解释一下吗?
答案 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);