C#で現在のインスタンスの型を取得する方法(GetTypeメソッド)
C#でオブジェクトの現在のインスタンスの型(実行時の型)を取得するには、GetType()メソッドを使用します。このメソッドはすべての型の基底クラスであるSystem.Objectに定義されており、呼び出し元インスタンスの正確な型をSystem.Typeオブジェクトとして返します。
GetType()メソッドの基本
GetType()はインスタンスに対して呼び出すことで、その実行時の型情報を取得できます。戻り値であるTypeオブジェクトをそのまま文字列連結して出力すると、「System.String」や「System.Int32」のような完全修飾型名が表示されます。
例1:string型のインスタンスで型を取得する
まずは文字列の変数から型を取得する基本的な例です。
using System;
public class Demo {
public static void Main(){
string s = "Demo";
Console.WriteLine("String = " + s);
Console.WriteLine("String Type = " + s.GetType());
}
}
出力
上記のコードを実行すると、次の出力が得られます。
String = Demo String Type = System.String
例2:数値型(double・int・short)で型を取得する
続いて、複数の数値型の変数に対してGetType()を使用した例を見てみましょう。
using System;
public class Demo {
public static void Main(){
double val1 = 5.5;
int val2 = 10;
short val3 = 2;
Console.WriteLine("Value = " + val1);
Console.WriteLine("Value Type = " + val1.GetType());
Console.WriteLine("Value = " + val2);
Console.WriteLine("Value Type = " + val2.GetType());
Console.WriteLine("Value = " + val3);
Console.WriteLine("Value Type = " + val3.GetType());
}
}
出力
実行結果は以下のとおりです。
Value = 5.5 Value Type = System.Double Value = 10 Value Type = System.Int32 Value = 2 Value Type = System.Int16
押さえておきたいポイント
GetType()はインスタンスから呼び出すメソッドです。型そのものから直接取得したい場合は、代わりにtypeof()演算子を使用します。- 戻り値は
System.Type型なので、リフレクションを通じてプロパティやメソッドなどの詳細な型情報を取得することも可能です。 - 整数リテラルは既定で
int(System.Int32)として扱われますが、short型の変数に代入すれば、実行時の型はSystem.Int16として正しく判定されます。
-
C#の値型と参照型の違いをわかりやすく解説
C#の変数は、大きく「値型(Value Type)」と「参照型(Reference Type)」の2種類に分類されます。この違いを正しく理解することは、メモリ管理やパフォーマンスの最適化において非常に重要です。それぞれの特徴を見ていきましょう。 値型(Value Type)とは 値型の変数には、データそのものが直接代入されます。すべての値型は System.ValueType クラスから派生しており、変数を宣言すると、システムはその値を格納するためのメモリを自動的に割り当てます。 値型の変数はスタック領域に格納されるという点が大きな特徴です。スタックはアクセスが高速なため、値型は効率的に動作し
-
C#のint型が取れる最大値はいくつ?整数型の範囲を一覧で解説
C#における整数型 int の最大値は 2,147,483,647(約21億)です。これは32ビット符号付き整数の上限にあたり、プログラム内では int.MaxValue という定数で取得することもできます。逆に最小値は −2,147,483,648 で、int.MinValue で参照可能です。C#の主なデータ型と値の範囲一覧以下の表は、C#で利用できる主なデータ型と、それぞれの意味・範囲・既定値をまとめたものです。用途に応じて適切な型を選ぶことで、メモリの無駄遣いやオーバーフローを防ぐことができます。型説明範囲既定値boolブール値(真偽値)true または falsefalsebyte8