我在处理C#实例方法/属性作用域差异时遇到了一个边缘案例。以下是代码:
public class Base
{
public EventHandler Click {get;set;}
public Base(EventHandler clickHandler)
{
this.Click = clickHandler;
}
}
public class Derived: Base
{
public Derived(): base((sender, e) => Execute())
{
}
private void Execute()
{
}
}
代码在MonoDevelop 3.0上编译良好,但在VS2010上会出现错误: 对于非静态字段、方法或属性“Base.Execute”,需要对象引用。 基本上,问题在于在从派生类的构造函数调用基类的构造函数时,MS的C#编译器不允许访问派生类的方法/属性等。为什么会这样?