typeof (Riferimenti per C#)

Aggiornamento: novembre 2007

Utilizzato per ottenere l'oggetto System.Type per un tipo. Un'espressione typeof ha il formato riportato di seguito:

System.Type type = typeof(int);

Note

Per ottenere il tipo in fase di esecuzione di un'espressione, è possibile utilizzare il metodo GetType di .NET Framework, come nell'esempio riportato di seguito.

int i = 0;
System.Type type = i.GetType();

Non è possibile sottoporre l'operatore typeof a overload.

L'operatore typeof può essere utilizzato anche su tipi generici aperti. I tipi con più di un parametro di tipo devono disporre del numero appropriato di virgole nella specifica. Nell'esempio riportato di seguito viene illustrato come determinare se il tipo restituito di un metodo è un oggetto IEnumerable<T> generico. Si presupponga che il metodo è un'istanza del tipo MethodInfo:

string s = method.ReturnType.GetInterface
    (typeof(System.Collections.Generic.IEnumerable<>).FullName

Esempio

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 questo esempio viene utilizzato il metodo GetType per determinare il tipo utilizzato per contenere il risultato di un calcolo numerico, che dipende dai requisiti di spazio su disco del numero risultante.

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
*/

Specifiche del linguaggio C#

Per ulteriori informazioni, vedere le sezioni riportate di seguito in Specifiche del linguaggio C#:

  • 7.5.11 Operatore typeof

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Parole chiave di C#

is (Riferimenti per C#)

Parole chiave per operatori (Riferimenti per C#)

Altre risorse

Riferimenti per C#