typeof (Referencia de C#)
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 ExampleClass
{
public int sampleMember;
public void SampleMethod() {}
static void Main()
{
Type t = typeof(ExampleClass);
// Alternatively, you could use
// ExampleClass obj = new ExampleClass();
// 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:
Void SampleMethod()
System.String ToString()
Boolean Equals(System.Object)
Int32 GetHashCode()
System.Type GetType()
Members:
Void SampleMethod()
System.String ToString()
Boolean Equals(System.Object)
Int32 GetHashCode()
System.Type GetType()
Void .ctor()
Int32 sampleMember
*/
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 la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.
Vea también
Referencia
Palabras clave de operadores (Referencia de C#)