C# 8.0のスイッチ式(switch式)とは?新構文の書き方を実例で解説
C# 8.0で導入されたスイッチ式(switch expression)は、式のコンテキスト内でswitchのような動作(セマンティクス)を実現できる新しい構文です。
従来のswitchは選択ステートメントであり、マッチ式とのパターンマッチングの結果に基づいて、候補の中から実行する1つのswitchセクションを選びます。
また、1つの式を3つ以上の条件で判定したい場合には、switchステートメントがif-else構文の代替としてよく使われてきました。スイッチ式を使うことで、このような処理をより簡潔に記述できます。
スイッチ式の新しい書き方
スイッチ式では、=>(アロー演算子)を使って各ケースの結果を直接返すため、コードが大幅に短くなります。
var message = c switch{
Fruits.Red => "The Fruits is red",
Fruits.Green => "The Fruits is green",
Fruits.Blue => "The Fruits is blue"
};サンプルコード:従来のswitch文とスイッチ式の比較
以下の例では、同じ処理を従来のswitch文とスイッチ式の両方で記述し、その違いを確認できます。
class Program{
public enum Fruits { Red, Green, Blue }
public static void Main(){
Fruits c = (Fruits)(new Random()).Next(0, 3);
// 従来のswitch文
switch (c){
case Fruits.Red:
Console.WriteLine("The Fruits is red");
break;
case Fruits.Green:
Console.WriteLine("The Fruits is green");
break;
case Fruits.Blue:
Console.WriteLine("The Fruits is blue");
break;
default:
Console.WriteLine("The Fruits is unknown.");
break;
}
// C# 8.0のスイッチ式
var message = c switch{
Fruits.Red => "The Fruits is red",
Fruits.Green => "The Fruits is green",
Fruits.Blue => "The Fruits is blue"
};
System.Console.WriteLine(message);
Console.ReadLine();
}
}実行結果
The Fruits is green The Fruits is green
スイッチ式のメリット
- 簡潔さ:
caseやbreakが不要になり、1つの式として値を返せるため、コード量が大幅に減ります。 - 代入への適合性: 結果を変数に直接代入できるため、宣言的なスタイルで記述できます。
- 網羅性チェック: コンパイラがすべてのケースをカバーしているかを検証してくれるため、漏れによるバグを防ぎやすくなります。
このように、C# 8.0のスイッチ式を活用することで、条件分岐のコードをより読みやすく、安全に書くことができます。
-
新しいGmailアプリを自分好みにカスタマイズする方法
新しいGmailアプリに追加された数々の改良は、実は予想通りと言えるものでした。以前、Googleは受信トレイアプリ「Inbox」を終了する代わりに、Gmailアプリの機能強化を進めることを発表していました。新版Gmailアプリは従来と同じく使いやすいままですが、見た目が大きく変わり、メニューの場所もこれまでとは異なります。「あれ?設定はどこにあったっけ?」と戸惑う方も多いはず。そこでこの記事では、Gmailアプリを自分好みにパーソナライズするための便利な設定方法をわかりやすく解説します。カテゴリタブを追加・削除する方法PC版と同様に、スマホ版でも受信トレイに表示するカテゴリを自由に追加・削除
-
USB-Cへの切り替え完全ガイド:メリットとおすすめアダプターを徹底解説
USB-Cは、急速に標準的な接続ポートとして普及しつつあります。USB 3.0による高速化の次のステップとして、USB-Cはより速く、より小型で、より使いやすい接続を実現しました。iPhoneやiPadで採用されているAppleのLightningコネクタと同様に、USB-Cはリバーシブル(表裏の区別がない)設計となっています。このコネクタはデータ転送と給電の両方に対応しており、従来のUSB規格を策定してきたUSB Implementers Forum(USB-IF)によって開発されました。Dell、Apple、Intel、Microsoft、Samsungなど、主要テック企業がメンバーに名を