使用可选参数冲突重载方法我有两个重载方法,一个带有可选参数。void foo(string a) { } void foo(string a, int b = 0) { }现在我打电话给: foo("abc");有趣的是第一次重载被调用。为什么第二次重载的可选值设置为零?说实话,我希望编译器带来一个错误,至少是一个警告,以避免无意中执行错误的方法。这种行为的原因是什么?为什么C#团队以这种方式定义它?
4 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
为什么他们这样定义?是否存在使用可选参数的重载有意义的场景?永远不会使用默认值调用它,对吗?但它可能导致不必要的错误。我仍然认为compliler应该至少给出一个警告。还有其他一些例子,开发人员必须明确告诉编译器他知道他在做什么。例如,如果方法中的参数声明为ref,我也需要在方法调用中显式使用ref关键字; 否则它将无法编译。
- 4 回答
- 0 关注
- 548 浏览
添加回答
举报
0/150
提交
取消