switch式
C# 8.0から、switch式という機能が追加されました。
従来のswitch構文は、C言語の構文を踏襲したもので、ちょっと使いにくかったのですが、シンプルな式として書けるようになりました。
構文としては、以下のようになります。
変数 switch { パターン1 => 式1, ・・・パターンn => 式n, }
例えば、、、
現在の月によって、以下の文字をコンソールに出力するコードを用意します。
- 1~4月の場合、月を英語(略語)で出力
- 7~8月の場合、「summer vacation!!!」を出力
- 上記以外の月の場合、数字で「〇月」を出力
従来のswitch構文の場合
int month = DateTime.Now.Month; string str; switch (month) { case 1: str = "Jan."; break; case 2: str = "Feb."; break; case 3: str = "Mar."; break; case 4: str = "Apr."; break; case 7: case 8: str = "summer vacation!!!"; break; default: str = month + "月"; break; } Console.WriteLine(str);
これをC# 8.0のswitch式で書き換えると、以下のようになります。
int month = DateTime.Now.Month; var str = month switch { 1 => "Jan.", 2 => "Feb.", 3 => "Mar.", 4 => "Apr.", _ when month == 7 || month == 8 => "summer vacation!!!", _ => month + "月" }; Console.WriteLine(str);
caseやbreakなどは不要となり、ダラダラと書かなくて済みます。
また、defaultの処理は、_(アンダースコア)とマッチさせます。
以上、switch式の備忘録でした。