【发布时间】:2019-06-11 13:18:24
【问题描述】:
我有 2 个重载
void SomeMethod(SomeType parameter1, bool optionalParameter = true){} //1st overload
和
void SomeMethod(SomeType parameter1, bool parameter2, bool optionalParameter = true){} //2nd overload
在调用第二个重载和省略可选参数时如何避免歧义?编译器总是选择第一个重载。 我看到了两种方式:
1) 切换参数1和参数2的位置:
void SomeMethod(bool parameter2, SomeType parameter1, bool optionalParameter = true){}
2) 使用第二次重载时显式提供默认值:
SomeMethod(parameter1, parameter2, true);
【问题讨论】:
-
不同的方法名称,或强制所有参数。
-
选择你最喜欢的选项: 1:不要使用可选参数。 2:使用命名参数,3:改变参数的顺序。 4:选择不同的方法名,5:改变参数的类型
-
本书的干净代码在这里可能对您有所帮助。如果您发现自己处于这种情况,这往往是设计问题,您必须退后一步,思考为什么要以现在的方式进行操作。