关于以下代码是否应该产生编译器警告的一个问题(它不会)。它声明了两个具有相同名称/返回类型的方法,一个具有附加的命名/可选参数,具有默认值。
注意:从技术上讲,该解决方案并不模棱两可,因为规则明确规定将调用第一个方法。请参见此处,过载分辨率,第三个要点。毫无疑问,这种行为对我来说也是直观的。
public void Foo(int arg) { ... }
public void Foo(int arg, bool bar = true) { ...}
Foo(42); // shouldn't this give a compiler warning?
我认为编译器警告在这里会很直观。虽然代码在技术上是干净的(它是否是一个声音设计是一个不同的问题:))。