C#のswitch文のサンプルです。
目次 | switch文とは |
switch文のサンプル | |
breakがない場合 | |
caseの後に条件を追加する | |
switch文の中でif文を使用する |
switch文とは
switch(条件) { case 値 : 処理 break; ・・・ default: 処理 break; } |
- 条件の値とcaseの値が一致すれば、配下の処理が実行されます。
- breakでswitch文を抜けます。
- defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
- 以下は、Microsoftのswitch(C# リファレンス)のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/switch
switch文のサンプル
string a = "2";
switch (a)
{
case "1":
Console.WriteLine("1つめ");
break;
case "2":
Console.WriteLine("2つめ"); // 出力される
break;
default:
Console.WriteLine("3つめ");
break;
}
8行目のcase "2"は変数aの値と一致するのでその配下の処理が実行されます。
10行目のbreakでswitch文を抜けます。
breakがない場合
string a = "2";
switch (a)
{
case "1":
Console.WriteLine("1つめ");
case "2":
Console.WriteLine("2つめ"); // 出力されない
break;
default:
Console.WriteLine("3つめ");
break;
}
7行目は、breakがありません。
フォールスルー(fall through/落ちる)と呼ばれます。
C#ではコンパイルエラーになります。
JavaやJavaScriptではエラーになりません。
caseの後に条件を追加する
int a = 8;
switch (a)
{
case int b when b < 5:
Console.WriteLine("1つめ");
break;
case int b when b < 10:
Console.WriteLine("2つめ"); // 出力される
break;
default:
Console.WriteLine("3つめ");
break;
}
5,8行目はcaseの後にwhenを使用して比較(<)を行っています。
C#7.0以降で使用できます。
switch文の中でif文を使用する
int num = 3;
switch (num)
{
case 3:
if (num % 2 == 0)
{
Console.WriteLine("偶数です");
}
else
{
Console.WriteLine("奇数です"); // 出力される
}
break;
default:
Console.WriteLine("その他");
break;
}}
6行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。
関連の記事
C# if文 条件分岐を行うサンプル
C# while文とdo while文のサンプル
C# for文 処理を繰り返すサンプル(break/continue)
C# クラスとコンストラクタのサンプル