【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("入力が有効な整数ではありません。");
}
}
}
各部分の解説
- using System;
System
名前空間を使用することを宣言します。これにより、標準入力・出力などの基本機能を使用できます。
- class Program
Program
クラスを定義します。C#のプログラムはクラス内で実行されます。
- static void Main()
Main
メソッドはプログラムのエントリーポイントです。ここからプログラムの実行が開始されます。
- Console.WriteLine(“ご希望の時間帯の番号を選択してください。");
- ユーザーに対して時間帯の選択を促すメッセージをコンソールに表示します。
- Console.WriteLine(" 1: 10時から12時");
- 選択肢の一つとして、「1: 10時から12時」を表示します。
- Console.WriteLine(" 2: 13時から15時");
- 選択肢の一つとして、「2: 13時から15時」を表示します。
- Console.WriteLine(" 3: 15時から18時");
- 選択肢の一つとして、「3: 15時から18時」を表示します。
- var line = Console.ReadLine();
- ユーザーの入力を読み取ります。入力は文字列として取得されます。
- if (int.TryParse(line, out var value))
- 入力が有効な整数に変換できるかどうかを確認します。変換に成功した場合、
value
にその整数値が格納されます。
- 入力が有効な整数に変換できるかどうかを確認します。変換に成功した場合、
- var message = value switch
switch
式を使用して、value
の値に基づいてメッセージを選択します。switch
式は、各ケースに対する結果を簡潔に記述するために使用されます。
- 1 => “10時から12時がご希望ですね。",
value
が1の場合に対応するメッセージです。
- 2 => “13時から15時がご希望ですね。",
value
が2の場合に対応するメッセージです。
- 3 => “15時から18時がご希望ですね。",
value
が3の場合に対応するメッセージです。
- _ => “入力した値に誤りがあります。"
- 上記のどのケースにも該当しない場合に対応するデフォルトのメッセージです。
- Console.WriteLine(message);
- 選択されたメッセージをコンソールに表示します。
- else
int.TryParse
が失敗した場合(入力が有効な整数ではない場合)の処理です。
- 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("入力した略語は定義されていません。");
}
}
}
}
各部分の解説
- using System;
System
名前空間を使用することを宣言します。これにより、標準入力・出力などの基本機能を使用できます。
- class Program
Program
クラスを定義します。C#のプログラムはクラス内で実行されます。
- static void Main()
Main
メソッドはプログラムのエントリーポイントです。ここからプログラムの実行が開始されます。
- Console.WriteLine(“略語を入力してください (例: API, RDB, UI):");
- ユーザーに対して略語の入力を促すメッセージをコンソールに表示します。
- var word = Console.ReadLine();
- ユーザーの入力を読み取ります。入力は文字列として取得されます。
- var term = word switch
switch
式を使用して、word
の値に基づいてterm
を選択します。switch
式は、各ケースに対する結果を簡潔に記述するために使用されます。
- “API" => “Application Programming Interface",
word
が"API"の場合に対応する説明文です。
- “RDB" => “Relational Database",
word
が"RDB"の場合に対応する説明文です。
- “UI" => “User Interface",
word
が"UI"の場合に対応する説明文です。
- _ => “"
- 上記のどのケースにも該当しない場合に対応するデフォルトの値(空文字列)です。
- if (term != “")
term
が空でない場合に以下の処理を実行します。
- Console.WriteLine(“{0}は {1} の略です。", word, term);
- 入力された略語とその説明をコンソールに表示します。
- else
term
が空の場合の処理です。
- Console.WriteLine(“入力した略語は定義されていません。");
- 入力された略語が定義されていない場合のエラーメッセージを表示します。
このプログラムは、ユーザーが入力した略語に対して対応する説明文を表示し、未定義の略語が入力された場合にはエラーメッセージを表示します。
ディスカッション
コメント一覧
まだ、コメントがありません