C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
生徒
「先生、C#で変数の型を調べることってできますか?」
先生
「はい、できますよ。C#では、GetType()
メソッドやtypeof
演算子を使って型を調べることができます。」
生徒
「えっ、どっちも同じじゃないんですか?どう使い分けるんですか?」
先生
「それはとても良い疑問ですね。これから、両方の違いと使い方をしっかり説明していきましょう!」
1. C#で型を調べるとは?
C#(シーシャープ)では、変数がどの型(タイプ)なのかを調べることができます。型というのは、「この変数は数字です」や「これは文字列です」といった、データの種類のことです。
プログラミングでは、データの型がとても重要です。間違った型のまま使うと、エラーが出てしまうこともあります。そのため、型を確認する方法を知っておくと、エラーを防いだり、プログラムの動きを理解したりするのに役立ちます。
2. GetType()メソッドとは?
GetType()
メソッドは、変数が実際に持っているデータの型を調べるときに使います。使い方はとても簡単です。
例として、文字列(string)を入れた変数の型を調べてみましょう。
string message = "こんにちは";
Console.WriteLine(message.GetType());
System.String
このように、変数message
の型がSystem.String
(C#でいう文字列型)だとわかります。
GetType()
は、変数の中身が決まっているときに、その型を調べたい場合に使います。
3. typeof演算子とは?
一方、typeof
(タイプオブ)演算子は、型そのものを直接指定して使います。変数ではなく、型の名前を渡して使う点がポイントです。
Console.WriteLine(typeof(int));
System.Int32
このコードでは、int
(整数型)がSystem.Int32
であると表示されます。
つまり、typeof
は、これから使おうとしている型の情報を取得したいときに使います。
4. GetType()とtypeofの違い
ここで、GetType()
とtypeof
の違いを表でまとめておきましょう。
使い方 | 使うタイミング | 例 |
---|---|---|
GetType() |
変数の型を調べるとき | myVar.GetType() |
typeof |
型そのものを指定したいとき | typeof(string) |
5. typeofとGetType()を比較するサンプル
ここでは、typeof
とGetType()
を同時に使って、同じ型かどうかを比較してみましょう。
int number = 100;
// GetType()とtypeofで型が一致するか調べる
if (number.GetType() == typeof(int))
{
Console.WriteLine("型はintです!");
}
else
{
Console.WriteLine("型が違います。");
}
型はintです!
このように、変数number
の型がint
であることを確認することができます。
6. GetType()の戻り値の仕組み
GetType()
が返す値は、Type
という特別なオブジェクトです。これはC#に用意された「型の情報を表すクラス」です。たとえば、次のように書くこともできます。
var typeInfo = "C#入門".GetType();
Console.WriteLine(typeInfo.FullName);
System.String
FullName
プロパティを使うと、より詳しい型の情報(完全修飾名)を見ることができます。
7. typeofを条件に使う活用例
typeof
は、条件分岐や型のチェックにも使えます。たとえば、ジェネリック(型に依存する処理)で条件を変えるときなどです。
Type t = typeof(double);
if (t == typeof(double))
{
Console.WriteLine("double型です。");
}
double型です。
このように、typeof
は特定の型を前提とした処理に活用されます。
8. 実際にどちらを使えばよいのか?
プログラミング初心者の方は、「変数の中身の型を知りたいか」「型そのものを扱いたいか」で使い分けると覚えやすいです。
- 変数の型を知りたいとき →
GetType()
- 型そのものを直接扱いたいとき →
typeof
まずは、GetType()
を使ってみることから始めると理解しやすいでしょう。