Comprobar de qué tipo es una variable u objeto en C#

Cuando tenemos un objeto de tipo genérico Object en C#, podemos hacer con él las operaciones básicas de cada objeto pero en ocasiones, necesitaremos convertirlo en un objeto menos abstracto para poder hacer operaciones más concretas.

Aunque esta entrada no forma parte del curso de Mono, sí está muy relacionada con esta entrega dedicada a tipos de datos.

Si tenemos una variable u objeto y no sabemos su tipo con seguridad, disponemos de dos métodos que usaremos para ver cuál es realmente el tipo del mismo. Veamos:

Por ejemplo, ¿cómo saber si el objeto “auxiliar” es un entero con signo de 32 bits (el entero más estándar, el que usamos al poner int simplemente)?

if(auxiliar.GetType() == Type.GetType("System.Int32"))
   return true;
else
   return false;

Al igual que con enteros, podemos hacer la comprobación para cualquier tipo:

  • Boolean: valor booleano
  • Byte: ocho bits sin signo
  • Char: carácter UNICODE
  • DateTime: fecha con tiempo
  • Decimal: número decimal
  • Double: pnto flotante de precisión doble
  • Int16: entero con signo de 16 bits
  • Int32: ídem pero de 32 bits
  • Int64: ídem pero de 64 bits
  • SByte:  8 bits con signo
  • Single: punto flotante de precisión simple
  • UInt16: entero sin signo de 16 bits
  • UInt32: ídem pero de 32 bits
  • UInt64: ídem pero de 64 bits