Switch 演算子

式の値を全ての case と比較し、式の値と一致する case に処理の制御を与えます。各caseの変数は整数定数、リテラル定数または定数式でマークすることが出来ます。定数式は、変数や関数呼び出しを含むことは出来ません。switch演算子の式は整数型でなければいけません – intまたはuint。

switch(式)
 {
  case constant: operators
  case constant: operators
     ...
  default: operators
 }

default ラベルでマークされた演算子は式の値がいずれの case 演算子の値とも異なる場合に実行されます。default は省くことができ、また最後に位置しないことも可能です。default が不在で、全ての case 演算子の値が式の値と異なる場合には、何も実行されません。

case キーワードと定数はただのラベルです。case の処理の実行後、プログラムは後に続くbreak 演算子まで更に進んで実行されます。これにて後に続くいくつかの演算を結びつけることが可能になります。

定数式はコンパイル時に計算されます。1 つのswitch 内で複数の定数が同じ値を持つことは出来ません。

例:

//--- 例1
switch(x)
 {
  case 'A':
    Print("CASE A");
    break;
  case 'B':
  case 'C':
    Print("CASE B or C");
    break;
  default:
    Print("NOT A, B or C");
    break;
 }
 
//---  例 2
  string res="";
  int i=0;
  switch(i)
    {
    case 1:
        res=i;break;
    default:
        res="default";break;
    case 2:
        res=i;break;
    case 3:
        res=i;break;
    }
  Print(res);
/*
  結果
  default
*/

参照

変数の初期化変数のアクセス権スコープとライフタイムオブジェクトの作成と解徐