Подтвердить что ты не робот

Как проверить Если число Enum содержит число?

У меня есть Enum вот так:

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

Я хочу проверить, содержит ли этот Enum номер, который я даю. Например: когда я даю 4, Enum содержит это, поэтому я хочу вернуть True, если я даю 7, в этом Enum нет 7, поэтому он возвращает False. Я попробовал Enum.IsDefine, но проверял только значение String. Как я могу это сделать?

4b9b3361

Ответ 1

Для метода IsDefined требуются два параметра. первый параметр - тип проверяемого перечисления. Этот тип обычно получается с помощью выражения типа. Параметр второй определяется как базовый объект. Он используется для указания целочисленного значения или строки, содержащей имя константы для поиска. Возвращаемое значение является логическим значением, которое является истинным, если значение существует и false, если оно не соответствует.

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
}

SOURCE

Ответ 2

Попробуйте следующее:

IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
                              .OfType<PromotionTypes>()
                              .Select(s => (int)s);
if(values.Contains(yournumber))
{
      //...
}

Ответ 3

Вы должны использовать Enum.IsDefined.

Я попробовал Enum.IsDefine, но он проверяет только значение String.

Я на 100% уверен, что он проверит как строковое значение, так и значение int (базовое), по крайней мере, на моей машине.

Ответ 4

Возможно, вы хотите проверить и использовать перечисление строкового значения:

if(Enum.TryParse(strType, out MyEnum myEnum)))
{
    // use myEnum
}