コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【C#】1つのオブジェクトが複数のオブジェクトのいずれかと等しいか判定する拡張メソッド

【C#】1つの文字列が複数の文字列のいずれかと等しいか判定する拡張メソッド - コガネブログ

以前、指定した1つの文字列が複数の文字列のいずれかと等しいかどうかを判定する
拡張メソッドを公開しましたが、文字列以外の型でも使えるジェネリック版を作成しました

using System.Linq;

/// <summary>
/// ジェネリックの拡張メソッドを管理するクラス
/// </summary>
public static class GenericExtensions
{
    /// <summary>
    /// オブジェクトが指定されたいずれかのオブジェクトと等しいかどうかを返します
    /// </summary>
    public static bool ContainsAny<T>(this T self, params T[] values)
    {
        return values.Any(c => c.Equals(self));
    }
}
enum JobType  // ジョブの種類
{
    SOLDIER,  // 王国兵士
    SORCERER, // 魔法使い
    HUNTER,   // 狩人
    MERCENARY // 傭兵
}

void Awake()
{
    // ジョブを王国兵士に設定します
    var job = JobType.SOLDIER;
    
    // ジョブが王国兵士もしくは魔法使いかどうかを確認します
    if ( job.ContainsAny( JobType.SOLDIER, JobType.SORCERER ) )
    {
        // ....
    }
}