C# switchの最新の使い方
C#では、switch
文が進化し、C# 8.0以降ではより柔軟で簡潔な記述が可能になりました。この資料では、従来のswitch
文と比較しながら、最新のswitch
式とその応用例について解説します。
目次
1. 従来のswitch
文
従来のswitch
文は、複数のケースに基づいて処理を分岐します。
int number = 2;
switch (number)
{
case 1:
Console.WriteLine("One");
break;
case 2:
Console.WriteLine("Two");
break;
default:
Console.WriteLine("Other");
break;
}
2. 最新のswitch
式(C# 8.0以降)
基本構文
従来のswitch
文に比べ、switch
式では簡潔に値を返すことができます。
int number = 2;
string result = number switch
{
1 => "One",
2 => "Two",
_ => "Other"
};
Console.WriteLine(result); // "Two"
=>
を使用して処理を簡潔に記述します。_
はデフォルトケース(default
)として機能します。
3. パターンマッチングの活用
switch
式では、パターンマッチングを組み合わせて柔軟な条件分岐が可能です。
型によるパターンマッチング
int number = 2;
string result = number switch
{
1 => "One",
2 => "Two",
_ => "Other"
};
Console.WriteLine(result); // "Two"
条件付きパターン
int number = 25;
string result = number switch
{
> 0 and <= 10 => "Between 1 and 10",
> 10 and <= 20 => "Between 11 and 20",
_ => "Other"
};
Console.WriteLine(result); // "Other"
4. when
条件を使用した拡張
各ケースに追加の条件を指定できます。
int number = 15;
string result = number switch
{
int n when n % 2 == 0 => "Even",
int n when n % 2 != 0 => "Odd",
_ => "Unknown"
};
Console.WriteLine(result); // "Odd"
5. リストやタプルの活用
switch
式では、タプルやリストを利用した複雑なパターンにも対応可能です。
タプルを使った例
(int x, int y) point = (1, 2);
string result = point switch
{
(0, 0) => "Origin",
(1, _) => "On X-axis at 1",
(_, 2) => "On Y-axis at 2",
_ => "Somewhere else"
};
Console.WriteLine(result); // "On Y-axis at 2"
6. switch
式を使った簡易計算
char operation = '+';
int x = 5, y = 10;
int result = operation switch
{
'+' => x + y,
'-' => x - y,
'*' => x * y,
'/' => x / y,
_ => throw new InvalidOperationException("Unknown operation")
};
Console.WriteLine(result); // 15
まとめ
- 従来の
switch
文よりも、switch
式を活用するとコードが簡潔になります。 - パターンマッチングと組み合わせることで、型や条件を柔軟に分岐可能です。
when
やタプルを利用すれば、複雑なケースにも対応できます。
最新のswitch
機能を活用し、より読みやすく、メンテナンス性の高いコードを目指しましょう!
ディスカッション
コメント一覧
まだ、コメントがありません