C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のGetTypeメソッドでオブジェクトの型を取得する方法を解説

C#におけるGetType()メソッドは、現在のインスタンスの正確なランタイム型(Type)を取得するためのメソッドです。このメソッドはすべてのクラスの基底クラスであるObjectクラスから継承されているため、あらゆるオブジェクトに対して使用できます。

GetType()メソッドの基本的な使い方

オブジェクトの型情報を取得するには、以下のようにGetType()を呼び出します。戻り値はSystem.Type型のオブジェクトです。

Type tp = value.GetType();

取得した型情報は、typeof演算子と組み合わせることで、特定のデータ型かどうかを判定できます。例えば、値がint型であるかどうかを確認するコードは以下のとおりです。

if (tp.Equals(typeof(int)))
    Console.WriteLine("{0} は整数(int)型です。", value);

サンプルプログラム

以下は、object型の配列に格納された複数の値について、それぞれの実際のデータ型をGetType()メソッドで判定し、結果をコンソールに出力する完全なサンプルコードです。

using System;

public class Program {
    public static void Main() {
        // int型とlong型の値をobject配列に格納
        object[] values = { (int)100, (long)17111 };

        foreach (var value in values) {
            Type tp = value.GetType();

            if (tp.Equals(typeof(int)))
                Console.WriteLine("{0} は整数(int)型です。", value);
            else
                Console.WriteLine("'{0}' はint型ではありません。", value);
        }
    }
}

実行結果

100 は整数(int)型です。
'17111' はint型ではありません。

ポイント解説

このサンプルでは、object[]配列にint型とlong型の異なる型の値を格納しています。foreachループ内で各要素に対してGetType()を呼び出すことで、変数が宣言上はobject型であっても、実際に格納されている値のランタイム型を正確に取得できることがわかります。

GetType()typeofの違いにも注意しましょう。GetType()はインスタンスからその実行時の型を取得するのに対し、typeofは型名を指定してTypeオブジェクトを取得します。両者をEquals()メソッドで比較することで、動的な型チェックが可能になります。この手法は、ボックス化された値型やポリモーフィズムを利用したコードで特に役立ちます。

  1. JavaのStringクラスsubstring()メソッドの使い方を徹底解説

    substring()メソッドは、元の文字列の開始インデックス(beginIndex)から終了インデックス(endIndex)までの部分に対応するString型の値を返します。終了インデックスが指定されていない場合は、文字列の末尾までが切り出しの対象となります。Javaの文字列は0番目の位置からインデックスが始まるという点に注意しましょう。 構文 public String substring(int beginIndex) public String substring(int beginIndex, int endIndex) beginIndex: 部分文字列の切り出しを開始する位置を示

  2. Rubyのuniqメソッドで配列の重複を削除する方法【ブロック・複数条件の使い方も解説】

    Rubyのuniqメソッドとは? Rubyのuniqメソッドを使うと、配列に含まれる重複した要素をすべて取り除くことができます。この記事では、基本的な使い方から、ブロックを活用した応用テクニック、さらに内部の動作原理まで、具体例を交えながらわかりやすく解説します。 基本の使い方 まずは、次のような配列を例に見てみましょう。 n = [1, 1, 1, 2, 3, 4, 5] この配列では、数値の1が重複しています。 uniqメソッドを呼び出すと、余分な1が取り除かれ、ユニークな要素だけを持つ新しい配列が返されます。 実行例: n.uniq # [1, 2, 3, 4, 5] uniq