スポンサードリンク
HOME > C# > 制御文 - switch

C# - 制御文 - switch

条件分岐のif文では、xxxの場合は○○○の処理、zzzの場合は△△△の処理をする。
といったプログラムを作りましたが、
今回は、条件分岐が非常に多い時に重宝するswitch文を説明します。

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

ファイル名:CMain.cs

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:
        System.Console.WriteLine("エラー");
        break;
      }
   }
}


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




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

ソースダウンロード

まず、で新しい記述が出てきました。
()の中には、比較対象とする変数などを入れます。
この場合は、変数aを対象とする。という意味になります。

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

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

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

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

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



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved