为什么这样的重载在C#中起作用?
public string DisplayOverload(string a, string b, string c = "c")
{
return a + b + c;
}
public string DisplayOverload(string a, string b, out string c)
{
c = a + b;
return a + b;
}
虽然这不起作用
public string DisplayOverload(string a, string b, string c = "c")
{
return a + b + c;
}
public string DisplayOverload(string a, string b, string c)
{
return a + b + c;
}
out
并且ref
被视为方法签名的一部分。
请注意,任何ref和out参数修饰符(第10.5.1节)都是签名的一部分。因此,
F(int)
和F(ref int)
是唯一的签名。
您的第二个示例c
是可选参数。即使您在没有此参数值的情况下调用,也调用了3参数重载方法,但编译器无法知道要调用哪个参数。
有关更多信息,请查看Eric Lippert关于此主题的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句