使用派生类对象访问重写的基类成员(C#)

Ant*_*mas 4 c# inheritance

给出2种类型

class A { public virtual void Hello() { Console.WriteLine("A"); } }
class B : A { public override void Hello() { Console.WriteLine("B"); } }
Run Code Online (Sandbox Code Playgroud)

和'B'的实例 B b = new B();

我可以访问Hello()的方法Ab?(我可以想到在A中暴露A作为属性但不确定是否有另一种方式)

我知道这在c ++中是可能的,但在c#中我的头脑.

PS:请不要谈论'为什么你想要这个?' 或者"这是一个糟糕的设计"等.

Mar*_*ell 9

不是来自外面.

内部,实例可以调用,通过base.Hello(),所以你可以添加一个:

public void Foo() { base.Hello(); }   
Run Code Online (Sandbox Code Playgroud)

  • @AntonyThomas哦,我可以回答:答案是:"不是来自外面".如果你试图通过在IL中静态调用它来作弊,CLI将抛出"操作可能会破坏运行时的稳定性".它**不会让你**那样做. (4认同)