2017-04-20 79 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

您正在將它鑄造爲'Horse',所以答案是肯定的。 –

+2

請注意,向下轉動通常不是一個好主意,並且*絕對是*代碼異味 – BradleyDotNET

+0

該變量屬於我,作爲你的靈魂...... – Gusman

回答

0

這裏有兩點。

1º:無論你施放多少次都沒關係。如果編譯器設法再次將哺乳動物變成馬,那麼他將是一匹馬,所以他將擁有馬的所有行爲。

第二:堆疊投這種方式絕對不是一個好習慣。

0

是的,它會的。雖然正在經歷一個上溯造型,你會發現,對於upcasted(Mammal)例如,下面的條件仍然成立:

(myMammal is Horse) == true 

但實際上這樣做是反模式。改爲使用interfaces代替架構。