鑑於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; }}'但編譯器抱怨。那麼我是否可以通過**派生的**來揭示**基**? –