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文のサンプルです。

using System;
class Test1
{
    static void Main()
    {
        string a = "2";

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

6行目は、変数aに値をセットしています。
8行目からswitch文が始まります。
13行目のcase "2"は変数aの値と一致するのでその配下の処理が実行されます。
14行目の処理が実行されます。
15行目のbreakでswitch文を抜けます。

breakがない場合

breakがない場合のサンプルです。

using System;
class Test1
{
    static void Main()
    {
        string a = "2";

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

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

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

caseの後に条件を追加する

caseの後に条件を追加するサンプルです。
C#7.0以降で使用できます。

using System;
class Test1
{
    static void Main()
    {
        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;
        }
    }
}

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

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

switch文の中でif文を使用するサンプルです。

using System;
class Test1
{
    static void Main()
    {
        int num = 3;

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

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

関連の記事

C# if文のサンプル
C# while文とdo while文のサンプル
C# for文のサンプル(break/continue)
C# クラスとコンストラクタのサンプル

△上に戻る