在下面的代码中,对Method2的调用接收Value参数为False,即使基类根本没有声明参数的默认值,派生类也默认声明为True。
可以认为(正如在类似的例子中所做的那样:C# optional parameters on overridden methods)编译器首先使用基类的方法声明(这是正确的,因为可以通过使用{前缀调用Method1前缀来更改此行为{1}}),但在这种情况下,基数根本不会声明默认值。
对此有合理的解释吗?
this.
输出:
Call to Method1, expected: True, got: True Call to Method2, expected: True, got: False
答案 0 :(得分:1)
答案 1 :(得分:1)
您的问题似乎与其他问题有关,这可能会对您有所帮助:Ambiguity with inheriting an optional-parameter base method
答案 2 :(得分:1)
我刚刚安装了Visual Studio 2012 RTM,即使在为Framework 3.5或2.0编译时,相同的代码也按预期工作。 显然这是一个编译器问题,而不是.Net Framework 1,并且已在新版本的C#编译器中得到修复。