区分可选参数和必需参数

时间:2019-06-11 13:18:24

标签: c# optional-parameters

我有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);

1 个答案:

答案 0 :(得分:6)

您可以这样称呼它:

SomeMethod(parameter1, parameter2: parameter2);

如注释中所述,就是使用命名参数的情况。再看一遍,这种实现没有多大意义。看起来您不需要第一种方法,或者您也不需要在第二种方法上将额外的参数标记为可选。