typeof (C#-Referenz)
Aktualisiert: November 2007
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 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
*/
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 den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
- 7.5.11 Der Operator "typeof"
Siehe auch
Konzepte
Referenz
Operatorschlüsselwörter (C#-Referenz)