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
を取り入れてみてください。