MRが楽しい

MRやVRについて学習したことを書き残す

C#でis演算子を使って型変換と成否判定を同時に行う

本日は C# の小ネタ枠です。
C# で is 演算子を使って型変換と成否判定を同時に行う方法を記事にします。

is演算子

is演算子は型のキャストとその変換の型に互換性があるかの判定を同時に行います。
演算子C# 9.0 以降利用可能です。Unity ではバージョン 2021.2 以降で C# 9.0 が利用可能です。
learn.microsoft.com

前回記事

型のキャストには以下の前回記事で作成した自作の継承クラスを使って試してみます。
bluebirdofoz.hatenablog.com

サンプルコード

以下のサンプルコードを作成しました。
is 演算子を使って型のキャストとその成否判定を同時に行っています。
・IsTest.cs

using UnityEngine;

public class IsTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        ItemBase item = new BallToy();;

        if (item is ToyBase toy)
        {
            Debug.Log($"{toy.Name} は ToyBase に変換できた");
        }
        if (item is FoodBase food)
        {
            Debug.Log($"{food.Name} は FoodBase に変換できた");
        }
        
        // as 演算子のキャストで書いた場合、以下と同義
        ToyBase toyBase = item as ToyBase;;
        if (toyBase != null)
        {
            Debug.Log($"{toyBase.Name} は ToyBase に変換できた");
        }
        
        FoodBase foodBase = item as FoodBase;;
        if (foodBase != null)
        {
            Debug.Log($"{foodBase.Name} は FoodBase に変換できた");
        }
    }
}

以下の通り、型のキャストとその成否判定が実施できました。