typeof (C# リファレンス)
更新 : 2007 年 11 月
型の System.Type オブジェクトを取得します。typeof 式は次の形式をとります。
System.Type type = typeof(int);
解説
式の実行時の型を取得するには、次の例のように、.NET Framework のメソッド GetType を使用できます。
int i = 0;
System.Type type = i.GetType();
typeof 演算子はオーバーロードできません。
typeof 演算子は、オープン ジェネリック型に使用することもできます。複数の型パラメータが指定されている型では、仕様上、適切な数のコンマが使用されている必要があります。メソッドの戻り値の型がジェネリック IEnumerable<T> かどうかを確認する方法を次の例に示します。メソッドが MethodInfo 型のインスタンスであることを想定しています。
string s = method.ReturnType.GetInterface
(typeof(System.Collections.Generic.IEnumerable<>).FullName
使用例
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
*/
次の例では、GetType メソッドを使用して、数値計算の結果の格納に使用する型が決定されます。これは、結果として導かれた数値のストレージ要件によって異なります。
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# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
- 7.5.11 typeof 演算子