この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Object.GetType メソッド ()

 

公開日: 2016年7月

現在のインスタンスの Type を取得します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

public Type GetType()

戻り値

Type: System.Type

現在のインスタンスの正確なランタイム型。

System.Objectの .NET Framework の型システムでは、すべての型の基底クラス、GetTypeを返すメソッドを使用できますTypeすべての .NET Framework 型を表すオブジェクト。 .NET Framework には、次の 5 つの種類のカテゴリが認識されます。

2 つのオブジェクトのxy同一のランタイム型があるObject.ReferenceEquals(x.GetType(),y.GetType())返しますtrueです。 次の例で、GetTypeメソッドをReferenceEqualsメソッドを 1 つの数値が他の 2 つの数値の値と同じ型であるかどうかを判別します。

using System;

public class Example
{
   public static void Main()
   {
      int n1 = 12;
      int n2 = 82;
      long n3 = 12;

      Console.WriteLine("n1 and n2 are the same type: {0}",
                        Object.ReferenceEquals(n1.GetType(), n2.GetType()));
      Console.WriteLine("n1 and n3 are the same type: {0}",
                        Object.ReferenceEquals(n1.GetType(), n3.GetType()));
   }
}
// The example displays the following output:
//       n1 and n2 are the same type: True
//       n1 and n3 are the same type: False      
System_CAPS_noteメモ

オブジェクトはを特定の種類であるかどうかを判断するのには、言語の型比較キーワードを使用したり作成できます。 たとえば、使用することができます、 TypeOf…Is Visual Basic で構築またはisc# のキーワードです。

GetTypeから派生したすべての型によって継承されたメソッドObjectです。 これは、比較の独自言語のキーワードを使用して、に加えて使用できることを意味、GetTypeメソッドを次の例のように、特定のオブジェクトの種類を決定します。

using System;

public class Example
{
   public static void Main()
   {
      object[] values = { (int) 12, (long) 10653, (byte) 12, (sbyte) -5,
                         16.3, "string" }; 
      foreach (var value in values) {
         Type t = value.GetType();
         if (t.Equals(typeof(byte)))
            Console.WriteLine("{0} is an unsigned byte.", value);
         else if (t.Equals(typeof(sbyte)))
            Console.WriteLine("{0} is a signed byte.", value);
         else if (t.Equals(typeof(int)))   
            Console.WriteLine("{0} is a 32-bit integer.", value);
         else if (t.Equals(typeof(long)))   
            Console.WriteLine("{0} is a 32-bit integer.", value);
         else if (t.Equals(typeof(double)))
            Console.WriteLine("{0} is a double-precision floating point.", 
                              value);
         else
            Console.WriteLine("'{0}' is another data type.", value);
      }
   }
}
// The example displays the following output:
//    12 is a 32-bit integer.
//    10653 is a 32-bit integer.
//    12 is an unsigned byte.
//    -5 is a signed byte.
//    16.3 is a double-precision floating point.
//    'string' is another data type.

Typeオブジェクトは、現在のクラスに関連付けられているメタデータを公開Objectです。

次のコード例では、ことを示しますGetType現在のインスタンスのランタイム型を返します。

using System;

public class MyBaseClass {
}

public class MyDerivedClass: MyBaseClass {
}

public class Test 
{
   public static void Main() 
   {
      MyBaseClass myBase = new MyBaseClass();
      MyDerivedClass myDerived = new MyDerivedClass();
      object o = myDerived;
      MyBaseClass b = myDerived;

      Console.WriteLine("mybase: Type is {0}", myBase.GetType());
      Console.WriteLine("myDerived: Type is {0}", myDerived.GetType());
      Console.WriteLine("object o = myDerived: Type is {0}", o.GetType());
      Console.WriteLine("MyBaseClass b = myDerived: Type is {0}", b.GetType());
   }
}
// The example displays the following output:
//    mybase: Type is MyBaseClass
//    myDerived: Type is MyDerivedClass
//    object o = myDerived: Type is MyDerivedClass
//    MyBaseClass b = myDerived: Type is MyDerivedClass 

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: