鉴于2种类型使用一个派生类对象访问一个重写基类成员(C#)
class A { public virtual void Hello() { Console.WriteLine("A"); } }
class B : A { public override void Hello() { Console.WriteLine("B"); } }
和 'B' B b = new B();
能访问的A
的Hello()
方法通b
的一个实例? (我可以想到在B中暴露A属性,但不知道是否有另一种方式)
我知道这是可能的c++,但在c#中我的脑袋挠了挠头。
PS:请不要谈论'你为什么要这样?'或“这是一个糟糕的设计”等。
哈..所以我问了一个问题,即使是马克答不上来,哈哈:)。 我知道'基地',但想知道从外面访问。 –
@AntonyThomas哦,我可以回答:答案是:“不从外面”。如果你试图通过在IL中静态调用它来作弊,那么CLI将会抛出一个“操作可能会破坏运行时的稳定性”。它**不会让你**做到这一点。 –
所以,我想我可以通过'B'中的propery将'base'('A')公开为'public A aProperty {get {return base; }}'但编译器抱怨。那么我是否可以通过**派生的**来揭示**基**? –