我有2个超载
void SomeMethod(SomeType parameter1, bool optionalParameter = true){} //1st overload
和
void SomeMethod(SomeType parameter1, bool parameter2, bool optionalParameter = true){} //2nd overload
在调用第二个重载并省略可选参数时如何避免歧义?编译器总是选择1st重载。 我看到两种方式:
1)切换parameter1和parameter2的位置:
void SomeMethod(bool parameter2, SomeType parameter1, bool optionalParameter = true){}
2)使用第二重载时显式提供默认值:
SomeMethod(parameter1, parameter2, true);
答案 0 :(得分:6)
您可以这样称呼它:
SomeMethod(parameter1, parameter2: parameter2);
如注释中所述,就是使用命名参数的情况。再看一遍,这种实现没有多大意义。看起来您不需要第一种方法,或者您也不需要在第二种方法上将额外的参数标记为可选。