ルルのゲーム開発備忘録

主にUnityやC#に関する情報を気まぐれに投稿していきま~す

【C#】型パターンマッチ「is 型名 変数名」

はじめに

今回は、C#7.0から追加された型パターンマッチについて紹介します。
これを使うと、型の判定とキャストを別々にする必要がなくなり、制御フローをよりパワフルかつ簡潔に書けるようになります。

通常の書き方(パターンマッチを使わない)

if(vehicle is Car) {
    Car car = (Car)vehicle;
    car.move();
}else if(vehicle is Train){
    Train train = (Train)vehicle;
    train.move();
}
  • is演算子で型判定
  • さらにif分の中でキャスト

二度手間...

型パターンマッチを使った書き方

if(vehicle is Car car) {
    car.move();
}else if(vehicle is Train train){
    train.move();
}

C#7.0からis演算子の後ろに型パターン(型名 変数名)を書けるようになった。
vehicle is Car carはvehicleがCar型ならtrue、それ以外ならfalseを返す。

このように型の判定とキャストを1行で書けるようになった。

さいごに

使っても特に問題はなさそうなので機会があればどんどん使って簡潔にしていければいいですね。
次の記事ではパターンマッチングの条件をさらに細かくするwhen句について紹介予定です。