2008-11-24 22 views
7

Załóżmy, że tworzymy ogólną zmienną Object i przypisujemy ją do konkretnej instancji. Jeśli zrobisz GetType(), otrzyma on typ Object lub typ oryginalnej klasy?Czy obiekty C# znają typ bardziej specyficznej klasy?

+0

Czy wypróbowałeś już 10 linii kodu? –

+0

Tak - zrobiłem to jako "miałem pytanie i chciałem podzielić się odpowiedzią" post :) – Kalid

+0

... wysłane w tym samym czasie, co Twoja odpowiedź próbna! –

Odpowiedz

3

Tak.

Można również zrobić:

object c = new FooBar(); 
if(c is FooBar) 
    Console.WriteLine("FOOBAR!!!"); 
2

Krótka odpowiedź: GetType() zwróci typ konkretnego obiektu. Zrobiłem szybką aplikację do testowania to:

 Foo f = new Foo(); 
     Type t = f.GetType(); 

     Object o = (object)f; 
     Type t2 = o.GetType(); 

     bool areSame = t.Equals(t2); 

A Tak, one są takie same.

+0

użyj: jeśli (o to Foo) zamiast tego. – Alan

0

Wywołanie funkcji GetType() spowoduje wywołanie typu RZECZYWISTEGO. Jeśli chcesz poznać typ bazowy, możesz wywołać metodę GetType(). BaseType