C# switch文の使い方

条件分岐のif文では、xxxの場合は○○○の処理、
zzzの場合は△△△の処理をする。
といったプログラムを作りましたが、

今回は、条件分岐が非常に多い時に重宝するswitch文を説明します。

1~12と数字を入れると、
1月から12月までの月名を英語で表示するプログラムを
作る事にします。

class CMain {
      public static void Main() {
            int a;
            string str;

            System.Console.WriteLine(
            "月を入力して下さい。(1~12月)");

            str = System.Console.ReadLine();
            a = int.Parse(str);

            switch (a) {
            case 1:
                  System.Console.WriteLine("January");
                  break;
            case 2:
                  System.Console.WriteLine("February");
                  break;
            case 3:
                  System.Console.WriteLine("March");
                  break;
            case 4:
                  System.Console.WriteLine("April");
                  break;
            case 5:
                  System.Console.WriteLine("May");
                  break;
            case 6:
                  System.Console.WriteLine("June");
                  break;
            case 7:
                  System.Console.WriteLine("July");
                  break;
            case 8:
                  System.Console.WriteLine("August");
                  break;
            case 9:
                  System.Console.WriteLine("September");
                  break;
            case 10:
                  System.Console.WriteLine("October");
                  break;
            case 11:
                  System.Console.WriteLine("November");
                  break;
            case 12:
                  System.Console.WriteLine("December");
                  break;
            default:5
                  System.Console.WriteLine("エラー");
                  break;
            }
      }
}

プログラムを実行すると以下のようになります。

月を入力して下さい。(1~12月)
1
January
月を入力して下さい。(1~12月)
13
エラー

入力する時は、数値を入力してEnterを押してください。
成功すると上記のように表示されます。

まず、新しい記述が出てきました。

switch (a)

()の中には、比較対象とする変数などを入れます。
この場合は、変数aを対象とする。という意味になります。

case 1:
      System.Console.WriteLine("January");
      break;

case文は、「変数aが1の場合」と言う意味です。
そして、変数aが1の場合、”January”が出力されます。
caseの後ろは、セミコロン(;)ではなく、
コロン(:)なので、注意してください。

break文は、switch文を抜けると言う意味です。

defaultは、上で書いたcase文のどれにも当てはまらなかった場合。
と言う意味です。
この場合、1~12の数値を対象としてるので、
それ以外の数値の場合は、”エラー”と表示するようにしました。

このプログラムをif文で書き換えるとしたら、
else if ~~~と言う記述が多くなってしまい、
見た目的にも、分かりやすさ的にもswitch文に軍配が上がります。

if文とswitch文のどちらを使うかは、その時の状況に応じて
適切に使い分けて下さい。