2008-11-24 10 views
7

Supongamos que crea una variable de objeto genérica y la asigna a una instancia específica. Si lo haces GetType(), ¿obtendrá Tipo Object o el tipo de la clase original?¿Los objetos C# conocen el tipo de clase más específica?

+0

¿Ha probado las 10 o más líneas de código para probar esto? –

+0

Sí, hice esto como una pregunta "tenía una pregunta y quería compartir la respuesta" :) – Kalid

+0

... publicada la misma vez que la respuesta de prueba. –

Respuesta

3

Sí.

También puede hacer:

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

Respuesta corta: GetType() devolverá el tipo de objeto específico. Hice una aplicación rápida para probar esto:

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

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

     bool areSame = t.Equals(t2); 

Y sí, son lo mismo.

+0

uso: if (o es Foo) en su lugar. – Alan

0

Llamar a GetType() llamará al tipo ACTUAL. Si desea saber el tipo de base, puede llamar a GetType(). BaseType

Cuestiones relacionadas