C# switch文のサンプル

C#のswitch文のサンプルです。

目次 switch文とは
  switch文のサンプル
  breakがない場合
  caseの後に条件を追加する
  switch文の中でif文を使用する

switch文とは

switch(条件)
{
  case 値 :
    処理
    break;
   ・・・
  default:
    処理
    break;
}
  • 条件の値とcaseの値が一致すれば、配下の処理が実行されます。
  • breakでswitch文を抜けます。
  • defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
  • 以下は、Microsoftのswitch(C# リファレンス)のリンクです。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/switch

switch文のサンプル

  string a = "2";

  switch (a)
  {
    case "1":
      Console.WriteLine("1つめ");
      break;
    case "2":
      Console.WriteLine("2つめ"); // 出力される
      break;
    default:
      Console.WriteLine("3つめ");
      break;
  }

8行目のcase "2"は変数aの値と一致するのでその配下の処理が実行されます。
10行目のbreakでswitch文を抜けます。

breakがない場合

  string a = "2";

  switch (a)
  {
    case "1":
      Console.WriteLine("1つめ");

    case "2":
      Console.WriteLine("2つめ"); // 出力されない
      break;
    default:
      Console.WriteLine("3つめ");
      break;
  }

7行目は、breakがありません。
フォールスルー(fall through/落ちる)と呼ばれます。
C#ではコンパイルエラーになります。
JavaやJavaScriptではエラーになりません。

caseの後に条件を追加する

  int a = 8;

  switch (a)
  {
    case int b when b < 5:
      Console.WriteLine("1つめ");
      break;
    case int b when b < 10:
      Console.WriteLine("2つめ"); // 出力される
      break;
    default:
      Console.WriteLine("3つめ");
      break;
  }

5,8行目はcaseの後にwhenを使用して比較(<)を行っています。
C#7.0以降で使用できます。

switch文の中でif文を使用する

  int num = 3;

  switch (num)
  {
    case 3:
      if (num % 2 == 0)
      {
        Console.WriteLine("偶数です");
      }
      else
      {
        Console.WriteLine("奇数です"); // 出力される
      }
      break;
    default:
      Console.WriteLine("その他");
      break;
  }}

6行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。

関連の記事

C# if文 条件分岐を行うサンプル
C# while文とdo while文のサンプル
C# for文 処理を繰り返すサンプル(break/continue)
C# クラスとコンストラクタのサンプル

△上に戻る