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 を並べていますが、問題なく実行できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門