1. ホーム
  2. c#

[解決済み] Enumに数値が含まれているかどうかを確認するには?

2023-03-07 11:52:43

質問

このようなEnumを持っています。

 public enum PromotionTypes
{
    Unspecified = 0, 
    InternalEvent = 1,
    ExternalEvent = 2,
    GeneralMailing = 3,  
    VisitBased = 4,
    PlayerIntroduction = 5,
    Hospitality = 6
}

このEnumに指定した数値が含まれているかどうかを調べたい。例えば 私が4を与えたとき、Enumはそれを含むので、私は真を返したい、私が7を与えた場合、このEnumに7はありません、だからそれは偽を返します。 私はEnum.IsDefineを試しましたが、それはString値のみをチェックします。 どのように私はそれを行うことができますか?

どのように解決するのですか?

この IsDefined メソッドでは 2つのパラメータ . そのため 最初のパラメータは、チェックされる列挙型の . この型は通常typeof式で取得します。また の第二パラメータは基本オブジェクトとして定義されます。 . これは,整数値か,検索する定数の名前を含む文字列のどちらかを指定するために使われる。戻り値はブール値で、値が存在すれば真、存在しなければ偽となる。

enum Status
{
    OK = 0,
    Warning = 64,
    Error = 256
}

static void Main(string[] args)
{
    bool exists;

    // Testing for Integer Values
    exists = Enum.IsDefined(typeof(Status), 0);     // exists = true
    exists = Enum.IsDefined(typeof(Status), 1);     // exists = false

    // Testing for Constant Names
    exists = Enum.IsDefined(typeof(Status), "OK");      // exists = true
    exists = Enum.IsDefined(typeof(Status), "NotOK");   // exists = false
}

ソース