C#のtypeof・GetType・is演算子とは?違いと使い方を実例で解説
C#では、変数やオブジェクトの「型(Type)」を取得したり判定したりするために、typeof、GetType()、is という3つの仕組みが用意されています。それぞれ役割が異なるため、違いを理解して使い分けることが重要です。
typeof 演算子
typeof は、指定した型名そのものから System.Type オブジェクトを取得する演算子です。引数にはクラス名などの型を直接渡します。実行時にインスタンスが必要ないため、静的な型情報を扱いたい場合に便利です。
GetType() メソッド
GetType() は、すべてのオブジェクトが持つ Object クラスのメソッドで、現在のインスタンスの実際の型を Type オブジェクトとして返します。インスタンスが必要な点が typeof との大きな違いです。継承関係がある場合でも、実行時の実際の型が返されることに注意してください。
is 演算子
is キーワードは、あるオブジェクトが特定の型にキャスト可能かどうかを判定するために使用します。戻り値は bool 型(true / false)です。C# 7.0以降では、is を使ったパターンマッチングにより、型判定と同時にキャストも行えるようになっています。
コード例
class Demo {
}
class Program {
static void Main() {
var demo = new Demo();
// typeof:型名から Type を取得
Console.WriteLine($"typeof { typeof(Demo)}");
// GetType():インスタンスから Type を取得
Type tp = demo.GetType();
Console.WriteLine($"GetType {tp}");
// is:型へのキャスト可否を判定
if (demo is Demo) {
System.Console.WriteLine($"is keyword check true");
}
Console.ReadLine();
}
}
実行結果
typeof ConsoleApp.Demo GetType ConsoleApp.Demo is keyword check true
まとめ
typeof は型名から、GetType() はインスタンスから Type 情報を取得します。また、is はオブジェクトが指定した型に互換性があるかを真偽値で判定します。用途に応じてこれらを使い分けることで、リフレクションや型安全な処理を効率的に実装できます。
-
C#のクラスとは?定義方法と基本構造を初心者向けに解説
C#におけるクラスの基本的な考え方C#において、クラス(class)とは、あるデータ型の設計図(ブループリント)を定義するものです。クラスをもとにして実際に生成されたデータの実体をオブジェクト(object)と呼び、これをクラスの「インスタンス」といいます。また、クラスを構成するメソッドや変数は、まとめてクラスのメンバー(members)と呼ばれます。クラスを理解することは、オブジェクト指向プログラミングを学ぶ上で最も重要な第一歩となります。クラス定義の一般的な書式クラスの定義は、キーワード class から始まり、その後にクラス名を記述します。そして、波括弧 { } で囲まれた部分がクラスの
-
C#の型キャストとは?暗黙的・明示的な型変換の基本を解説
C#の型キャスト(型変換)とは型キャスト(型変換)とは、あるデータ型の値を別のデータ型へ変換する操作のことです。C#では、主に以下の2つの方法で型変換を行います。暗黙的な型変換(Implicit Conversion)暗黙的な型変換は、C#が自動的に、かつ型安全な形で実行してくれる変換です。たとえば、小さい整数型から大きい整数型への変換(intからlongなど)や、派生クラスから基底クラスへの変換がこれに該当します。プログラマーが特別な記述をする必要はありません。明示的な型変換(Explicit Conversion)明示的な型変換は、開発者がキャスト演算子「( )」などの事前定義された機能を