C#でプログラミングをしていると、複数の条件に基づいて処理を分岐させたい場面がよくあります。例えば、ユーザーの入力に応じて異なる操作を行ったり、曜日ごとに異なるメッセージを表示したりする場合などです。こういった状況で便利なのが「switch-case文」です。この記事では、C#におけるswitch-case文の基本的な使い方から応用まで、初心者の方にも分かりやすく解説します。
switch-case文の基本構造
switch-case文は、ある変数の値に応じて異なる処理を実行するための制御構造です。基本的な構造は以下のようになります:
switch (変数)
{
case 値1:
// 値1の場合の処理
break;
case 値2:
// 値2の場合の処理
break;
// ... 他のケース
default:
// どのケースにも当てはまらない場合の処理
break;
}
それでは、具体的な例を見てみましょう。
using System;
class Program
{
static void Main()
{
Console.Write("1から3の数字を入力してください: ");
string input = Console.ReadLine();
switch (input)
{
case "1":
Console.WriteLine("1を選択しました。");
break;
case "2":
Console.WriteLine("2を選択しました。");
break;
case "3":
Console.WriteLine("3を選択しました。");
break;
default:
Console.WriteLine("1から3以外の値が入力されました。");
break;
}
}
}
このプログラムでは、ユーザーが入力した数字に応じて異なるメッセージを表示します。default
ケースは、指定されたケース以外の値が入力された場合に実行されます。
break文の重要性
各case
ブロックの最後にbreak
文を入れることは非常に重要です。break
文がないと、次のcase
の処理も続けて実行されてしまいます。これを「フォールスルー」と呼びます。
ただし、C# 8.0以降では、break
文を省略してフォールスルーを防ぐ新しい構文も導入されています:
switch (変数)
{
case 値1:
// 処理
return; // またはthrow
case 値2:
// 処理
return; // またはthrow
// ...
}
複数の条件を1つのcaseにまとめる
同じ処理を行う複数のケースがある場合、以下のようにまとめることができます:
Console.Write("好きな果物を入力してください: ");
string fruit = Console.ReadLine().ToLower();
switch (fruit)
{
case "りんご":
case "バナナ":
case "オレンジ":
Console.WriteLine("フルーツが好きなんですね!");
break;
case "トマト":
case "きゅうり":
Console.WriteLine("野菜が好きなんですね!");
break;
default:
Console.WriteLine("その他の食べ物が好きなんですね!");
break;
}
パターンマッチングを使用したswitch文
C# 7.0以降では、switch文でパターンマッチングを使用できるようになりました。これにより、型や条件に基づいて分岐することが可能になります:
object obj = 42;
switch (obj)
{
case int i when i > 0:
Console.WriteLine($"正の整数: {i}");
break;
case int i:
Console.WriteLine($"0または負の整数: {i}");
break;
case string s:
Console.WriteLine($"文字列: {s}");
break;
default:
Console.WriteLine("その他の型");
break;
}
このExample、obj
の型と値に応じて異なる処理を行っています。
まとめ
switch-case文は、複数の条件に基づいて処理を分岐させる強力なツールです。基本的な使い方は簡単ですが、複数のケースをまとめたり、パターンマッチングを使用したりすることで、より柔軟で読みやすいコードを書くことができます。
初心者の方は、まずは単純な値の比較から始めて、徐々に複雑な条件分岐に挑戦してみるとよいでしょう。switch-case文をマスターすることで、C#プログラミングの幅が大きく広がります。実際のプロジェクトで積極的に活用してみてください。
コメント