typeof (Riferimenti per C#)
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 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 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 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 altre informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.
Vedere anche
Riferimenti
Parole chiave per operatori (Riferimenti per C#)