У меня есть 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. Как я могу это сделать?
Ответы:
Для
IsDefined
метода требуются два параметра . Первым параметром является тип перечисления для проверки . Этот тип обычно получается с помощью выражения 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 }
ИСТОЧНИК
источник
Попробуй это:
IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes)) .OfType<PromotionTypes>() .Select(s => (int)s); if(values.Contains(yournumber)) { //... }
источник
Вам следует использовать
Enum.IsDefined
.Я на 100% уверен, что он проверит как строковое значение, так и целое (базовое) значение, по крайней мере, на моей машине.
источник
Возможно, вы хотите проверить и использовать перечисление строкового значения:
string strType; if(Enum.TryParse(strType, out MyEnum myEnum)) { // use myEnum }
источник