【C#】新しいswitch文のサンプル

基本的なswitch文と新しい書き方の違いを見ていきましょう
新しいswitch文は、C#8.0から使えます

サンプル1

基本的な書き方

// ■リスト4-8: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)  // 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;
}

新しい書き方

using System;

class Program
{
    static void Main()
    {
        // ユーザーに時間帯の選択を促すメッセージを表示
        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))
        {
            // switch式を使用してvalueの値に基づいてメッセージを選択
            // valueが1、2、3の場合に対応するメッセージを返し、それ以外の場合はエラーメッセージを返す
            var message = value switch
            {
                1 => "10時から12時がご希望ですね。",
                2 => "13時から15時がご希望ですね。",
                3 => "15時から18時がご希望ですね。",
                _ => "入力した値に誤りがあります。"
            };

            // 選択されたメッセージを表示
            Console.WriteLine(message);
        }
        else
        {
            // 入力が有効な整数ではない場合のエラーメッセージを表示
            Console.WriteLine("入力が有効な整数ではありません。");
        }
    }
}

各部分の解説

  1. using System;
    • System名前空間を使用することを宣言します。これにより、標準入力・出力などの基本機能を使用できます。
  2. class Program
    • Programクラスを定義します。C#のプログラムはクラス内で実行されます。
  3. static void Main()
    • Mainメソッドはプログラムのエントリーポイントです。ここからプログラムの実行が開始されます。
  4. Console.WriteLine(“ご希望の時間帯の番号を選択してください。");
    • ユーザーに対して時間帯の選択を促すメッセージをコンソールに表示します。
  5. Console.WriteLine(" 1: 10時から12時");
    • 選択肢の一つとして、「1: 10時から12時」を表示します。
  6. Console.WriteLine(" 2: 13時から15時");
    • 選択肢の一つとして、「2: 13時から15時」を表示します。
  7. Console.WriteLine(" 3: 15時から18時");
    • 選択肢の一つとして、「3: 15時から18時」を表示します。
  8. var line = Console.ReadLine();
    • ユーザーの入力を読み取ります。入力は文字列として取得されます。
  9. if (int.TryParse(line, out var value))
    • 入力が有効な整数に変換できるかどうかを確認します。変換に成功した場合、valueにその整数値が格納されます。
  10. var message = value switch
    • switch式を使用して、valueの値に基づいてメッセージを選択します。switch式は、各ケースに対する結果を簡潔に記述するために使用されます。
  11. 1 => “10時から12時がご希望ですね。",
    • valueが1の場合に対応するメッセージです。
  12. 2 => “13時から15時がご希望ですね。",
    • valueが2の場合に対応するメッセージです。
  13. 3 => “15時から18時がご希望ですね。",
    • valueが3の場合に対応するメッセージです。
  14. _ => “入力した値に誤りがあります。"
    • 上記のどのケースにも該当しない場合に対応するデフォルトのメッセージです。
  15. Console.WriteLine(message);
    • 選択されたメッセージをコンソールに表示します。
  16. else
    • int.TryParseが失敗した場合(入力が有効な整数ではない場合)の処理です。
  17. Console.WriteLine(“入力が有効な整数ではありません。");
    • 入力が無効であることを示すエラーメッセージを表示します。

このようにして、ユーザーの入力に基づいて適切なメッセージを表示するプログラムを実現しています。

サンプル2

基本的な書き方

// ■リスト4-9:switch文の例(文字列の値による多分岐処理)
var word = Console.ReadLine();
var term = "";

switch (word)  // switch文は、文字列に対しても使える
{
    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);
}

新しい書き方

namespace List4_9a
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // ユーザーに入力を促すメッセージを表示
            Console.WriteLine("略語を入力してください (例: API, RDB, UI):");
            var word = Console.ReadLine();

            // switch式を使用してwordの値に基づいてtermを選択
            var term = word switch
            {
                "API" => "Application Programming Interface",
                "RDB" => "Relational Database",
                "UI" => "User Interface",
                _ => ""
            };

            // termが空でない場合にメッセージを表示
            if (term != "")
            {
                Console.WriteLine("{0}は {1} の略です。", word, term);
            }
            else
            {
                Console.WriteLine("入力した略語は定義されていません。");
            }
        }
    }
}

各部分の解説

  1. using System;
    • System名前空間を使用することを宣言します。これにより、標準入力・出力などの基本機能を使用できます。
  2. class Program
    • Programクラスを定義します。C#のプログラムはクラス内で実行されます。
  3. static void Main()
    • Mainメソッドはプログラムのエントリーポイントです。ここからプログラムの実行が開始されます。
  4. Console.WriteLine(“略語を入力してください (例: API, RDB, UI):");
    • ユーザーに対して略語の入力を促すメッセージをコンソールに表示します。
  5. var word = Console.ReadLine();
    • ユーザーの入力を読み取ります。入力は文字列として取得されます。
  6. var term = word switch
    • switch式を使用して、wordの値に基づいてtermを選択します。switch式は、各ケースに対する結果を簡潔に記述するために使用されます。
  7. “API" => “Application Programming Interface",
    • wordが"API"の場合に対応する説明文です。
  8. “RDB" => “Relational Database",
    • wordが"RDB"の場合に対応する説明文です。
  9. “UI" => “User Interface",
    • wordが"UI"の場合に対応する説明文です。
  10. _ => “"
    • 上記のどのケースにも該当しない場合に対応するデフォルトの値(空文字列)です。
  11. if (term != “")
    • termが空でない場合に以下の処理を実行します。
  12. Console.WriteLine(“{0}は {1} の略です。", word, term);
    • 入力された略語とその説明をコンソールに表示します。
  13. else
    • termが空の場合の処理です。
  14. Console.WriteLine(“入力した略語は定義されていません。");
    • 入力された略語が定義されていない場合のエラーメッセージを表示します。

このプログラムは、ユーザーが入力した略語に対して対応する説明文を表示し、未定義の略語が入力された場合にはエラーメッセージを表示します。

C#

Posted by hidepon