C# の switch 文
目次
C# 7.0 で利用可能になった case ラベルのパターンについては「C# のパターンとパターン変数による is と case の拡張」をみてください。
C# の switch 文
C# の switch 文を使うと、ある変数の値によって処理を分岐できます。 switch 文は次のような形式で記述します。
switch (変数)
{
case 値1:
// 変数が値1であるときの処理
break;
case 値2:
// 変数が値2であるときの処理
break;
default:
// case で指定された以外の値の時の処理
break;
}
次の例では変数 i の値によって、処理を分岐しています。
var i = 2;
switch (i)
{
case 1:
Console.WriteLine("Sun");
break;
case 2:
Console.WriteLine("Mon");
break;
case 3:
Console.WriteLine("Tue");
break;
default:
Console.WriteLine("[Default]");
break;
}
// Mon
C# の switch 文の case に指定できる型
switch 文で使える変数の型は数値型、bool 型、文字 (char) 型、列挙型 (enum)、文字列 (string) 型です。
C# の switch 文の各 case の終了
switch 文の各 case の区切りには通常、 break 文を記述します。 break 文によって、switch 文が終了します。
break 文の他、ひとつめの case 処理の後に他の case の処理を実行するには、 goto に続いて case を記述します。
次の例では、case 2 の後に case 1 を実行します。
var i = 2;
switch (i)
{
case 1:
Console.WriteLine("Sun");
break;
case 2:
Console.WriteLine("Mon");
goto case 1;
case 3:
Console.WriteLine("Tue");
break;
default:
Console.WriteLine("[Default]");
break;
}
// Mon
// Sun
default の処理を行うには、 goto default; とします。
C# の switch 文の case ラベルを連続して記述する
case ラベルの後に処理が無い場合は、case を複数並べることは可能です。
var i = 2;
switch (i)
{
case 1:
case 2:
Console.WriteLine("Mon");
break;
case 3:
Console.WriteLine("Tue");
break;
default:
Console.WriteLine("[Default]");
break;
}
// Mon
上記の例では case 1, case 2 を並べていますが、問題なく実行できます。