我测试了这样的代码:
class A
{
public A() { }
public virtual void Test ()
{
Console.WriteLine("I am A!");
}
}
class B : A
{
public B() { }
public override void Test()
{
Console.WriteLine("I am B!");
base.Test();
}
}
class C : B
{
public C() { }
public override void Test()
{
Console.WriteLine("I am C!");
base.base.test(); //I want to display here "I am A"
}
}
并尝试从 A 类的 C 方法 Test 调用(祖 parent 的方法)。但它不起作用。请告诉我一种调用祖 parent 虚拟方法的方法。
最佳答案
你不能 - 因为它会违反封装。如果 B 类想要在 Test
上强制执行某种不变性(或其他),如果 C 类可以绕过它,那将是相当严峻的。
如果您发现自己想要这个,您应该质疑您的设计 - 也许至少您的一个继承关系是不合适的? (我个人倾向于支持组合而不是继承,但这是一个单独的讨论。)
关于c# - 为什么 C# 不支持 base.base?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648910/