MRが楽しい

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

C#9.0でパターン結合子(not,and,or)を利用する

本日は C# の小ネタ枠です。
C#9.0でパターン結合子(not,and,or)を利用する方法を記事にします。

パターン結合子(not,and,or)

C# 9.0 からは not、and、および or のパターン結合子を使って論理パターンを作成可能です。
Unity ではバージョン 2021.2 以降で C# 9.0 が利用可能です。
learn.microsoft.com

not:パターンが式に一致しないことを確認します。
and:両方のパターンが式に一致することを確認します。
or:いずれか片方のパターンが式に一致することを確認します。

本パターン結合子を使って if 文の判定を行う場合 is 演算子と合わせて利用する必要があります。

if (input is not null)
{
    // ...
}

サンプルコード

実際にパターン結合子を使ったサンプルコードを作成しました。
パターン結合子は if 文での判定のほか、switch 文でも利用可能です。
・AndOrTest.cs

using System;
using UnityEngine;

public class AndOrTest : MonoBehaviour
{
    private enum CheckType
    {
        Alpha,
        Beta,
        Gamma,
        Delta,
        Epsilon,
        Zeta
    }
    
    // Start is called before the first frame update
    void Start()
    {
        int count = 5;
        if (count is > 0 and < 10)
        {
            Debug.Log("0 > count > 10");
        }
        
        CheckType value = CheckType.Alpha;
        switch (value)
        {
            case CheckType.Alpha or CheckType.Beta:
                Debug.Log("Alpha or Beta");
                break;
            case CheckType.Gamma or CheckType.Delta:
                Debug.Log("Gamma or Delta");
                break;
            case CheckType.Epsilon or CheckType.Zeta:
                Debug.Log("Epsilon or Zeta");
                break;
            default:
                throw new ArgumentOutOfRangeException();
        };
    }
}