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
Referencia
Palabras clave de operadores (Referencia de C#)