typeof (C#-Referenz)
Wird verwendet, um das System.Type-Objekt für einen Typ zu erhalten.Der typeof-Ausdruck nimmt folgende Form an:
System.Type type = typeof(int);
Hinweise
Um den Laufzeittyp eines Ausdrucks abzurufen, kann die GetType-Methode von .NET Framework verwendet werden, wie im folgenden Beispiel gezeigt:
int i = 0;
System.Type type = i.GetType();
Der Operator typeof kann nicht überladen werden.
Der Operator typeof kann auch bei offenen generischen Typen verwendet werden.Typen mit mehr als einem Parameter müssen die entsprechende Anzahl Kommas in der Spezifikation aufweisen.Im folgenden Beispiel wird gezeigt, wie ermittelt wird, ob der Rückgabetyp einer Methode ein generischer IEnumerable<T>-Typ ist.Angenommen, diese Methode ist eine Instanz eines MethodInfo-Typs:
string s = method.ReturnType.GetInterface
(typeof(System.Collections.Generic.IEnumerable<>).FullName);
Beispiel
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
*/
In diesem Beispiel wird die GetType-Methode verwendet, um den Typ zu ermitteln, der das Ergebnis der numerischen Berechnung enthält.Dies hängt von den Speicheranforderungen der resultierenden Zahl ab.
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
*/
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in der C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.
Siehe auch
Referenz
Operatorschlüsselwörter (C#-Referenz)