public virtual
및 B.Test()
으로 선언 된 A.Test()
은 private new
으로 선언되었습니다.
나는 B
을 상속하는 C
에서 base.Test()
을 호출합니다.이 C# 코드는 합법적입니까?
이 코드는 모노 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: Method TestBug.B:Test() is inaccessible from method TestBug.C:.ctor()
이 올바른 행동인가?
이 컴파일은 Microsoft .NET 또는 최신 버전의 Mono에서 컴파일됩니까?
C#에서이 것에 대해 뭐라고 말합니까?
C# 버전에 따라 달라 집니까?
하위 클래스에서 'private' 메소드에 액세스 할 수 없습니다. 다른 클래스에서는 숨겨져 있지만 하위 클래스에서는 사용할 수있게하려면'protected'를 사용해야합니다. –
뭐 하시겠습니까? 손자 클래스 C에서 공개 A. 테스트 메소드에 액세스 하시겠습니까? – statueuphemism
사용중인 Mono 버전의 버그 인 것 같습니다. –