C#で複数の条件分岐を扱う際に便利なのが「switch文」です。if文よりもコードが見やすく、意図が伝わりやすくなるため、可読性の高いプログラムを書くうえで役立ちます。
この記事では、C#のswitch文の基本的な構文から、実践的な使用例、注意点までをわかりやすく解説します。プログラミング初心者の方でも理解しやすい内容になっていますので、ぜひ最後まで読んで実践に役立ててください。
switch文とは?
C#におけるswitch文は、ある変数の値に応じて、複数の処理の中から該当するものを実行する制御構文です。if-else文でも同様の処理は可能ですが、条件が多くなると見づらくなるため、switch文が使われます。
基本構文
switch (変数)
{
case 値1:
// 処理1
break;
case 値2:
// 処理2
break;
default:
// どのcaseにも一致しない場合の処理
break;
}
break文の役割とdefaultの意味
breakの必要性
switch文では、各caseの最後にbreakを記述します。
これは処理を終わらせて、switch文から抜けるためです。breakがないと、次のcaseに処理が流れてしまい、意図しない動作になる可能性があります。
int number = 2;
switch (number)
{
case 1:
Console.WriteLine("One");
break;
case 2:
Console.WriteLine("Two");
break;
case 3:
Console.WriteLine("Three");
break;
default:
Console.WriteLine("Unknown");
break;
}
この場合、numberが2なので「Two」と出力され、そこでbreakによってswitchを抜けます。
defaultとは?
defaultは、どのcaseにも該当しなかった場合に実行されるブロックです。
省略可能ですが、例外処理やエラー表示などを行うとより安全です。
switch文の使用例:文字列による分岐
C#では、整数だけでなく文字列もswitchの条件として使用できます。
string command = "start";
switch (command)
{
case "start":
Console.WriteLine("開始します");
break;
case "stop":
Console.WriteLine("停止します");
break;
case "pause":
Console.WriteLine("一時停止します");
break;
default:
Console.WriteLine("不明なコマンドです");
break;
}
これは、ユーザーの入力に応じた処理を分岐するような場面で便利です。
複数のcaseで同じ処理を行う方法
同じ処理を複数のcaseで共通化したい場合、以下のように書けます。
int score = 100;
switch (score)
{
case 100:
case 90:
Console.WriteLine("優秀です!");
break;
case 80:
case 70:
Console.WriteLine("平均的です");
break;
default:
Console.WriteLine("頑張りましょう");
break;
}
このように、連続したcaseのあとに1つの処理を記述することで、重複を減らせます。
switch式(C# 8.0以降)を使ってより簡潔に
C# 8.0以降では、switchを式として使えるようになりました。
これにより、より簡潔で読みやすいコードを書くことができます。
string result = number switch
{
1 => "One",
2 => "Two",
3 => "Three",
_ => "Unknown"
};
Console.WriteLine(result);
switch式ではbreakが不要で、=>で対応する値を返します。_はdefaultの役割です。
switch文の注意点
caseの重複に注意
以下のように、同じ値のcaseを複数書くとコンパイルエラーになります。
// エラーになるコード
switch (number)
{
case 1:
Console.WriteLine("A");
break;
case 1:
Console.WriteLine("B");
break;
}
null値の取り扱いに注意
C#では、値がnullになる場合はswitch文での処理に注意が必要です。
文字列でnullが来る可能性があるときは、事前にnullチェックを入れるか、case null:を追加しておくと安全です。
実践例:曜日に応じて挨拶を変える
DayOfWeek today = DateTime.Now.DayOfWeek;
switch (today)
{
case DayOfWeek.Monday:
Console.WriteLine("月曜日ですね。今週も頑張りましょう!");
break;
case DayOfWeek.Friday:
Console.WriteLine("金曜日です!あと少し!");
break;
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
Console.WriteLine("週末ですね。ゆっくり休みましょう");
break;
default:
Console.WriteLine("今日もお疲れさまです!");
break;
}
このように、現実のアプリケーションでもよく使われる構文です。
まとめ
C#のswitch文は、複数の条件に応じて処理を分けるときに非常に便利な構文です。
可読性が高く、保守性も良いため、適切に使いこなせるとコードの質が向上します。
ポイントとしては:
caseとbreakのセットを忘れずにdefaultでフォールバック処理を用意- C# 8.0以降は
switch式で簡潔に書くのもおすすめ
ぜひ、日々のプログラミングにswitchを取り入れてみてください。
