C#_switch 文

・受け取った値の結果を元に、実行処理を変えたい時に使用する。

・switch 中で使える変数は、整数 or 文字列 のみ。

・条件が 多分岐なら、 if 文でなく switch 文を使用する。
( 自分的には、4 分岐以上なら使おうかと)
多分岐では、 if 文より switch の方が速いとされている。

 

以下のサンプルにおいては、
a = 5; としているので、処理 C が実行され、switch 文から抜ける。
a の値が 0 だった場合は処理 A が実行され、同上
a の値が 1 だった場合は処理 B が実行され、同上
a の値が case 値に一致しない時は処理 X が実行され、同上

ex)

int a = 5;
switch (a)
{
    case 0:
        //処理A
        break;
    case 1:
        //処理B
        break;
    case 5:
        //処理C
        break;
    default:
        //処理X
        break;
}

default は case で指定されたどの値とも異なる場合の処理。
default で実施する処理がない場合は、break のみを書いておく。

break は switch 文から抜ける為に使う。

 

フォースルーの禁止

C/C++ では break 文を書かないと
下に書かれている case 文の処理を実行してしまう
ex ) だと a = 0; の時、 処理A を実行したら下にある、処理 B C X も実行してしまう。
a = 5; の時、 処理C を実行したら下にある、処理 X も実行してしまう。

このことをフォールスルーという。
fall through:空いた穴などを通り抜けて落ちる。失敗に終わる。

C/C++ でうっかり break を書き忘れる、というバグが頻繁に起こったので、
C# では break または goto または return を書く必要がある。

 

goto 文

処理の流れを追いづらくなるので、あまり使うのは好ましくない

goto ラベルA;
と書いてあった場合、
goto ラベルA まで処理が流れたらラベルA がある位置まで処理がジャンプする。
ラベルA はswitch のブロック外でも内でも記述できる

 

こちらから

http://udemy.benesse.co.jp/development/c-sharp-switch.html
http://ufcpp.net/study/csharp/st_branch.html

 

型スイッチというのもある。
以上。