本文へスキップ
BecomeCoder

C#文法コース · 第2章 制御構文 · レッスン16

switch 文と switch 式

ブラウザで完結

導入

「値が1なら○、2なら△、3なら□」のように1つの値を多くの候補と照合するとき、ifを並べるよりswitchが読みやすくなります。現代のC#では簡潔なswitch式が主流です。

図解

flowchart TB
    V["day の値"] --> S{"switch"}
    S -->|1| M["月曜"]
    S -->|2| T["火曜"]
    S -->|それ以外 _| O["不明"]

サンプル

int day = 2;

// switch 式(=> で値を返す。現代的な書き方)
string name = day switch
{
    1 => "月曜",
    2 => "火曜",
    3 => "水曜",
    _ => "不明",      // _ はどれにも当てはまらない場合(default)
};
Console.WriteLine(name);   // 火曜

// 範囲でも分岐できる
int score = 85;
string grade = score switch
{
    >= 90 => "A",
    >= 70 => "B",       // これに該当
    _ => "C",
};
Console.WriteLine(grade);  // B
  • 値 switch { パターン => 結果, ... }switch式
  • _ は「どれにも当てはまらない場合」(ifの最後のelseに相当)
  • >= 90 のような範囲パターンも書ける

演習

int medal = 2;

// TODO: switch式で 1→"金"、2→"銀"、3→"銅"、それ以外→"圏外" を result に入れて出力してください
___
  • 期待される出力:
ヒント1を見る

medal switch { 1 => "金", ... } の形です

ヒント2を見る

string result = medal switch { 1 => "金", 2 => "銀", 3 => "銅", _ => "圏外" }; Console.WriteLine(result);

まとめ

  • switch式は1つの値を多くの候補と照合して値を返す
  • _はデフォルト(その他すべて)
  • >= 90のような範囲パターンも使える

次回: switchをさらに強力にする「パターンマッチング」です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。