2017-04-20 75 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代替架构。