【C# .NET 8】switch文でオブジェクトの型を判別する方法【パターンマッチング解説】

2025年7月23日

C# switch文による型判定のサンプル画像

C#でオブジェクトの型を判定したいとき、is 演算子だけではなく、switch文を使った「パターンマッチング」がとても便利です。特に、C# 8以降(.NET Core 3.0~)では、型によって処理を分岐するコードが非常にシンプルに書けるようになりました。

この記事では、.NET 8対応のC#コードで、switch文を使って型を判別する方法を初心者にもわかりやすく解説します。

🔍 本記事の対象読者

✅ C#でswitch文を使った型判定の基本

以下のように、C# 8以降では switch(obj) 文で型による分岐ができます。

object obj1 = "Hello, world!";

switch (obj1)
{
    case string s:
        Console.WriteLine($"string型: {s}");
        break;

    case int i:
        Console.WriteLine($"int型: {i}");
        break;

    case null:
        Console.WriteLine("nullです");
        break;

    case object o:
        Console.WriteLine($"その他のobject型: {o.GetType().Name}");
        break;
}

📌 ポイント解説

⚠ 注意:case object: を上の方に書いてしまうと、それより下の分岐がすべて無視されてしまいます。必ず最後に書くようにしましょう。

🧠 C# 9以降は「switch式」でもっと簡潔に書ける

string result = obj1 switch
{
    string s => $"string型: {s}",
    int i => $"int型: {i}",
    null => "nullです",
    object o => $"その他: {o.GetType().Name}"
};

Console.WriteLine(result);

このように、switch 式ではより簡潔に型による分岐処理を行うことができます。複数の型ごとに異なる文字列を返したい場合に最適です。

📝 条件付き分岐も可能:when句の活用

型だけでなく、追加条件を加えて分岐させることもできます。

switch (obj1)
{
    case string s when s.Length > 10:
        Console.WriteLine("長めの文字列です");
        break;

    case string s:
        Console.WriteLine("短めの文字列です");
        break;
}

🔚 まとめ:C#のswitch文で柔軟な型判定をしよう

C#のswitch文は、C# 8以降のパターンマッチング機能により、オブジェクトの型によって柔軟な分岐処理が可能になりました。これにより、型チェックとキャストを同時にシンプルに記述できます。

✨ 本記事のおさらい

C#のswitchを使いこなすことで、型による分岐処理が簡潔に書けるようになります。コードがスッキリし、メンテナンス性も向上します。

📚 関連リンク


WinUI 3 / XAML の Grid.Width 設定方法

WinUI 3でMenuFlyoutをShowAtで表示する方法【コード付き解説】

MenuFlyoutWinUI 3 で便利なポップアップメニュー

WinUI 3の開発で混乱しがちな「空白のウィンドウ」と「空白のページ」の違い

PowerShellでMSIXアプリ(Storeアプリ)を起動する方法|AppUserModelIdとURIスキーム活用術

Microsoft Storeアプリ更新時のロールアウト設定まとめ

PowerShellでtail -f!WindowsでUTF-8対応のリアルタイムログ監視を実現する方法

Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

Microsoft Authenticatorのオートフィル機能が2025年7月に終了

RuntimeBroker.exeとMsEdgeWebView2.exeとは?Windows 11のプロセスについて

PowerShellでGrapheme Clusterについて処理を考える

業務用ノートパソコンのストレージは暗号化されている?BitLockerの確認と対策方法

【Windows】Volta コマンドライン インストール | Node.jsをバージョン管理する方法

【C# .NET 8 対応】List<string> を重複なしでマージする方法|

【C#】大容量ファイルを指定サイズ以下に分割する方法|.NET8対応コード付き

【C# .NET 8】ファイルから重複行を削除する2つの方法|Distinct vs HashSet

【C#】.emlファイルの本文を読みやすく抽出する方法

WinUI 3 ComboBoxの自作クラスバインドと選択イベント検出方法

switch文でオブジェクトの型を判別する方法

【WPF】Task.Run中にUIを更新する方法

System.Text.Json 9.0.0.0 で FileNotFoundException

C#で改行・カンマ入りのCSVを正しく読み込む方法【.NET8対応】

C#/.NET 8でDateTimeを日本時間でISO 8601形式に変換する方法

【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入

和暦設定でも安心!C#でISO 8601やカスタム日時文字列を確実にDateTimeに変換