C#におけるswitch文とswitch式の違い
C#8.0で導入されたswitch式は、従来のswitch文に比べて簡潔で可読性の高い記述を可能にします。本記事では、両者の違いを具体例とともに解説します。
目次
サンプル1: 数値を用いたswitchの基本的な使い方
従来のswitch文
以下は従来のswitch文を使用した例です。このコードは、ユーザーが選択した時間帯に応じて対応するメッセージを表示します。
// ユーザーに時間帯の選択を促す
Console.WriteLine("ご希望の時間帯の番号を選択してください。");
Console.WriteLine(" 1: 10時から12時");
Console.WriteLine(" 2: 13時から15時");
Console.WriteLine(" 3: 15時から18時");
var line = Console.ReadLine();
var value = int.Parse(line);
switch (value)
{
case 1:
Console.WriteLine("10時から12時がご希望ですね。");
break;
case 2:
Console.WriteLine("13時から15時がご希望ですね。");
break;
case 3:
Console.WriteLine("15時から18時がご希望ですね。");
break;
default:
Console.WriteLine("入力した値に誤りがあります。");
break;
}
switch式による簡潔な記述
次の例では、switch式を使用して従来の記述をより簡潔に書き換えています。
// ユーザーに時間帯の選択を促す
Console.WriteLine("ご希望の時間帯の番号を選択してください。");
Console.WriteLine(" 1: 10時から12時");
Console.WriteLine(" 2: 13時から15時");
Console.WriteLine(" 3: 15時から18時");
var line = Console.ReadLine();
if (int.TryParse(line, out var value))
{
var message = value switch
{
1 => "10時から12時がご希望ですね。",
2 => "13時から15時がご希望ですね。",
3 => "15時から18時がご希望ですね。",
_ => "入力した値に誤りがあります。"
};
Console.WriteLine(message);
}
else
{
Console.WriteLine("入力が有効な整数ではありません。");
}
サンプル2: 文字列を用いたswitchの応用
従来のswitch文
次は、文字列の値に基づいて略語の意味を出力する従来のswitch文の例です。
// ユーザーに略語の入力を促す
var word = Console.ReadLine();
var term = "";
switch (word)
{
case "API":
term = "Application Programming Interface";
break;
case "RDB":
term = "Relational Database";
break;
case "UI":
term = "User Interface";
break;
}
if (term != "")
{
Console.WriteLine("{0}は {1} の略です。", word, term);
}
switch式による簡潔な記述
switch式を用いることで、記述をシンプルにできます。
// ユーザーに略語の入力を促す
Console.WriteLine("略語を入力してください (例: API, RDB, UI):");
var word = Console.ReadLine();
var term = word switch
{
"API" => "Application Programming Interface",
"RDB" => "Relational Database",
"UI" => "User Interface",
_ => ""
};
if (term != "")
{
Console.WriteLine("{0}は {1} の略です。", word, term);
}
else
{
Console.WriteLine("入力した略語は定義されていません。");
}
解説
switch式の利点
- 簡潔性: 従来のswitch文に比べて記述が短くなります。
- エラー回避: 各ケースで
break
を記述する必要がないため、記述漏れによるエラーを防げます。 - デフォルトケース:
_
を用いることで簡単にデフォルト処理を指定できます。 - 式としての利用: switch式は値を返すため、他の式や変数への代入に直接利用可能です。
適用場面
- 条件分岐が多い場合でも簡潔に記述したい場面。
- 戻り値が必要な条件分岐を記述する際。
実行結果の例
サンプル1の結果
入力例1:
2
出力例1:
13時から15時がご希望ですね。
入力例2:
4
出力例2:
入力した値に誤りがあります。
サンプル2の結果
入力例1:
API
出力例1:
APIは Application Programming Interface の略です。
入力例2:
XYZ
出力例2:
入力した略語は定義されていません。
比較表
特徴 | 従来のswitch文 | 新しいswitch式 |
---|---|---|
記述の簡潔さ | やや冗長 | 簡潔 |
break の必要性 | 必須 | 不要 |
デフォルト処理 | default | _ |
式として利用可能 | 不可 | 可能 |
C#8.0で導入されたswitch式は、記述の簡潔性と可読性を向上させるための非常に有用な機能です。条件分岐を頻繁に利用するプログラムにおいて、その利点を最大限に活用しましょう。
ディスカッション
コメント一覧
まだ、コメントがありません