typeof (Referencia de C#)

Actualización: noviembre 2007

Obtenga el objeto System.Type para un tipo. Una expresión typeof se presenta de la siguiente forma:

System.Type type = typeof(int);

Comentarios

Para obtener el tipo de una expresión en tiempo de ejecución, puede utilizar el método GetType de .NET Framework, como en el siguiente ejemplo:

int i = 0;
System.Type type = i.GetType();

El operador typeof no se puede sobrecargar.

El operador typeof también se puede utilizar en tipos de genéricos abiertos. Los tipos con más de un parámetro de tipo deben tener el número adecuado de comas en la especificación. El ejemplo siguiente muestra cómo determinar si el tipo de valor devuelto de un método es un IEnumerable<T> genérico. Suponga que el método es una instancia de un tipo de MethodInfo:

string s = method.ReturnType.GetInterface
    (typeof(System.Collections.Generic.IEnumerable<>).FullName

Ejemplo

public class SampleClass2
{
   public int sampleMember;
   public void SampleMethod() {}

   static void Main()
   {
      Type t = typeof(SampleClass);
      // Alternatively, you could use
      // SampleClass obj = new SampleClass();
      // Type t = obj.GetType();

      Console.WriteLine("Methods:");
      System.Reflection.MethodInfo[] methodInfo = t.GetMethods();

      foreach (System.Reflection.MethodInfo mInfo in methodInfo)
         Console.WriteLine(mInfo.ToString());

      Console.WriteLine("Members:");
      System.Reflection.MemberInfo[] memberInfo = t.GetMembers();

      foreach (System.Reflection.MemberInfo mInfo in memberInfo)
         Console.WriteLine(mInfo.ToString());
   }
}
/*
 Output:
    Methods:
    System.Type GetType()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    Members:
    System.Type GetType()
    System.String ToString()
    Boolean Equals(System.Object)
    Int32 GetHashCode()
    Void .ctor()
    Void .ctor(Int32, System.String)
    System.String name
    Int32 id
*/

En este ejemplo se utiliza el método GetType para determinar el tipo utilizado para contener el resultado de un cálculo numérico. Esto depende de los requisitos de almacenamiento del número resultante.

class GetTypeTest
{
    static void Main()
    {
        int radius = 3;
        Console.WriteLine("Area = {0}", radius * radius * Math.PI);
        Console.WriteLine("The type is {0}",
                          (radius * radius * Math.PI).GetType()
        );
    }
}
/*
Output:
Area = 28.2743338823081
The type is System.Double
*/

Especificación del lenguaje C#

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 7.5.11 El operador typeof

Vea también

Conceptos

Guía de programación de C#

Referencia

Palabras clave de C#

is (Referencia de C#)

Palabras clave de operadores (Referencia de C#)

Otros recursos

Referencia de C#