typeof (Référence C#)
Mise à jour : novembre 2007
Sert à obtenir l'objet System.Type d'un type. Une expression typeof prend la forme suivante :
System.Type type = typeof(int);
Notes
Pour obtenir le type d'exécution d'une expression, vous pouvez utiliser la méthode GetType du .NET Framework, comme dans l'exemple suivant :
int i = 0;
System.Type type = i.GetType();
L'opérateur typeof ne peut pas être surchargé.
L'opérateur typeof peut également être utilisé sur les types génériques ouverts. Les types ayant plusieurs paramètres de type doivent présenter le nombre approprié de virgules dans leur spécification. L'exemple suivant indique comment déterminer si le type de retour d'une méthode est un IEnumerable<T> générique. Supposez que la méthode est une instance de type MethodInfo :
string s = method.ReturnType.GetInterface
(typeof(System.Collections.Generic.IEnumerable<>).FullName
Exemple
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
*/
Cet exemple utilise la méthode GetType pour déterminer le type utilisé pour contenir le résultat d'un calcul numérique. Cela dépend des besoins en mémoire du nombre résultant.
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
*/
Spécification du langage C#
Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.
- 7.5.11 Opérateur typeof
Voir aussi
Concepts
Référence
Mots clés des opérateurs (Référence C#)