typeof (C# リファレンス)

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

次の例では、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# 言語仕様」を参照してください。言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。

参照

関連項目

C# のキーワード

is (C# リファレンス)

演算子キーワード (C# リファレンス)

System.Type

概念

C# プログラミング ガイド

その他の技術情報

C# リファレンス