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
Riferimenti
Parole chiave per operatori (Riferimenti per C#)