我已经将A.Test()
声明为public virtual
,并将B.Test()
声明为private new
。
我从继承自B
的C
中调用base.Test()
。
这段代码可以在Mono 2.10.2上编译通过,但会抛出MethodAccessException
异常:
class A {
public virtual void Test () { }
}
class B : A {
private new void Test () { }
}
class C : B {
public C ()
{
base.Test ();
}
public static void Main (string[] args)
{
var c = new C ();
}
}
这是我收到的异常:
System.MethodAccessException: 方法 TestBug.B:Test() 无法从方法 TestBug.C:.ctor() 访问
这是正确的行为吗?
Microsoft .NET或更新版本的Mono是否编译通过?
C#规范对此有何规定?
它是否随着C#版本的变化而改变?
private
方法,那是不可能的。如果您希望该方法对其他类隐藏但在子类中可用,则应使用protected
。 - Doan Cuong