2017-04-20 10 views
-7
class Program 
{ 
    class Mammal 
    { 

    } 

    class Horse : Mammal 
    { 

    } 

    static void Main() 
    { 
     Horse myHorse = new Horse(); 
     Mammal myMammal = myHorse; 
     Horse myHorseAgain = myMammal as Horse; 
    } 
} 

myHorseAgainには、Horseクラスで定義されたメソッドがありますか?この変数はどのクラスに属していますか?

+0

あなたは「馬」としてキャストしているので、答えは「はい」です。 –

+2

ダウンキャスティングは通常良いアイデアではないことを覚えておいてください*確かに*コードのにおい – BradleyDotNET

+0

その変数はあなたの魂として私に属しています.... – Gusman

答えて

0

2つのポイントがあります。

1º:キャスト回数は関係ありません。コンパイラが哺乳動物を再び馬に変えることができれば、馬になるので、馬の行動はすべて取ります。

第2回:このようなスタッキングキャストは間違いなく良い方法です。

0

はい、そうです。それはアップキャストを通過されていますが、(Mammal)upcasted例えば、以下の状態がまだ保持していることがわかります:

(myMammal is Horse) == true 

をしかし、実際にこれを行うと、アンチパターンです。代わりにinterfacesを使用してアーキテクチャに進んでください。

関連する問題