カテゴリ: C# 更新日: 2026/01/17

C#で型を調べる方法!GetType()・typeof演算子の違いと使い方

C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方

先生と生徒の会話形式で理解しよう

生徒

「先生、C#で変数の型を調べることってできますか?」

先生

「はい、できますよ。C#では、GetType()メソッドやtypeof演算子を使って型を調べることができます。」

生徒

「えっ、どっちも同じじゃないんですか?どう使い分けるんですか?」

先生

「それはとても良い疑問ですね。これから、両方の違いと使い方をしっかり説明していきましょう!」

1. C#で型を調べるとは?

1. C#で型を調べるとは?
1. C#で型を調べるとは?

C#(シーシャープ)では、変数がどんな型(データの種類)を持っているのかを調べることができます。型とは「このデータは数値なのか?文字列なのか?」といった情報で、プログラムを書くうえでとても重要な部分です。

たとえば、数字として扱いたいデータに文字列が入っていると、計算ができずにエラーになってしまいます。そこで、変数の型を調べる方法を知っておくと、「今この変数には何が入っているのか」を確認でき、思わぬ間違いを防ぐ助けになります。

以下のような簡単なコードでも、型を意識する重要性が分かります。


var value = 123;
Console.WriteLine("valueに入っている型は? → " + value.GetType());

valueに入っている型は? → System.Int32

このように、型を調べられる仕組みは、初心者がプログラムの理解を深めるためにも非常に役立ちます。「型を確認できる」ということ自体が、C#の大きな特徴のひとつなのです。

2. GetType()メソッドとは?

2. GetType()メソッドとは?
2. GetType()メソッドとは?

GetType()メソッドは、変数が実際に持っているデータの型を調べるときに使います。使い方はとても簡単です。

例として、文字列(string)を入れた変数の型を調べてみましょう。


string message = "こんにちは";
Console.WriteLine(message.GetType());

System.String

このように、変数messageの型がSystem.String(C#でいう文字列型)だとわかります。

GetType()は、変数の中身が決まっているときに、その型を調べたい場合に使います。

3. typeof演算子とは?

3. typeof演算子とは?
3. typeof演算子とは?

一方、typeof(タイプオブ)演算子は、型そのものを直接指定して使います。変数ではなく、型の名前を渡して使う点がポイントです。


Console.WriteLine(typeof(int));

System.Int32

このコードでは、int(整数型)がSystem.Int32であると表示されます。

つまり、typeofは、これから使おうとしている型の情報を取得したいときに使います。

4. GetType()とtypeofの違い

4. GetType()とtypeofの違い
4. GetType()とtypeofの違い

ここで、GetType()typeofの違いを表でまとめておきましょう。

使い方 使うタイミング
GetType() 変数の型を調べるとき myVar.GetType()
typeof 型そのものを指定したいとき typeof(string)

5. typeofとGetType()を比較するサンプル

5. typeofとGetType()を比較するサンプル
5. typeofとGetType()を比較するサンプル

ここでは、typeofGetType()を同時に使って、同じ型かどうかを比較してみましょう。


int number = 100;

// GetType()とtypeofで型が一致するか調べる
if (number.GetType() == typeof(int))
{
    Console.WriteLine("型はintです!");
}
else
{
    Console.WriteLine("型が違います。");
}

型はintです!

このように、変数numberの型がintであることを確認することができます。

6. GetType()の戻り値の仕組み

6. GetType()の戻り値の仕組み
6. GetType()の戻り値の仕組み

GetType()が返す値は、Typeという特別なオブジェクトです。これはC#に用意された「型の情報を表すクラス」です。たとえば、次のように書くこともできます。


var typeInfo = "C#入門".GetType();
Console.WriteLine(typeInfo.FullName);

System.String

FullNameプロパティを使うと、より詳しい型の情報(完全修飾名)を見ることができます。

7. typeofを条件に使う活用例

7. typeofを条件に使う活用例
7. typeofを条件に使う活用例

typeofは、条件分岐や型のチェックにも使えます。たとえば、ジェネリック(型に依存する処理)で条件を変えるときなどです。


Type t = typeof(double);

if (t == typeof(double))
{
    Console.WriteLine("double型です。");
}

double型です。

このように、typeofは特定の型を前提とした処理に活用されます。

8. 実際にどちらを使えばよいのか?

8. 実際にどちらを使えばよいのか?
8. 実際にどちらを使えばよいのか?

プログラミング初心者の方は、「変数の中身の型を知りたいか」「型そのものを扱いたいか」で使い分けると覚えやすいです。

  • 変数の型を知りたいときGetType()
  • 型そのものを直接扱いたいときtypeof

まずは、GetType()を使ってみることから始めると理解しやすいでしょう。

まとめ

まとめ
まとめ

C#での型の確認は、プログラムの安全性や可読性を高めるために非常に重要です。この記事では、GetType()メソッドとtypeof演算子の違いと使い方について詳しく学びました。それぞれの使い分けポイントを押さえることで、コードの可視性やメンテナンス性が向上し、型の誤用によるエラーを未然に防ぐことができます。GetType()は変数の実際の型を調べる際に、typeofは型そのものの情報を取得したいときに用いるという明確な違いがありました。

また、Typeクラスを活用することで、FullNameNamespaceといった詳細情報を取得することも可能です。これにより、ログ出力やデバッグ時の情報収集にも応用できるようになります。さらに、条件分岐においても型の比較にtypeofGetType()を使うことで、より安全で明確な制御が可能です。

実際の開発現場では、ジェネリクスやリフレクションなど、より高度な型操作が必要になるケースもありますが、まずはこの基本的な2つの手法を理解することが第一歩です。型の確認を習慣づけることで、より堅牢なC#プログラミングスキルが身につくことでしょう。

型のチェックに使えるサンプルコード


// GetType()の活用例
object value = 3.14;
Console.WriteLine(value.GetType().FullName); // System.Double

// typeofの活用例
Type stringType = typeof(string);
Console.WriteLine(stringType.FullName); // System.String

// 比較して使う例
if (value.GetType() == typeof(double))
{
    Console.WriteLine("valueはdouble型です");
}
先生と生徒の振り返り会話

生徒

「先生、GetType()typeofの違い、しっかり理解できました!」

先生

「よかったです。それぞれの使い所を覚えることがポイントですね。どんなときに使い分けるか説明できますか?」

生徒

「はい。変数の中身の型を知りたいときはGetType()、型そのものを扱いたいときはtypeofですね!」

先生

「そのとおりです!今後はもっと複雑な型チェックや、リフレクションにもチャレンジしていきましょう。」

生徒

「はい!Typeクラスも気になるので、調べてみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

C#で変数の型を確認したいときは、どの方法を使えばいいですか?

C#で変数の型を調べたいときは、GetType()メソッドを使うと便利です。GetType()は、変数が実際に持っているデータの型を取得するために使用します。

C#のtypeof演算子は何に使うのですか?

typeof演算子は、C#で型そのものを指定して型情報を取得する際に使います。変数ではなく、intやstringなど型の名前を指定して使います。
カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決