Проверить, является ли объект Enum

91

Я хотел бы знать, является ли 'theObject' перечислением (любого типа перечисления)

 foreach (var item in Enum.GetValues(theObject.GetType())) {

     //do something
 }
Аран Малхолланд
источник

Ответы:

207

Вопрос есть ответ. :)

bool isEnum = theObject is Enum;
EMP
источник
14
Любить это! И даже ближе к вопросу: if (theObject is Enum) {...}
Питер Лиллевольд
6
Я пришел сюда даже не для этого, и я ставлю вам точку. Это так ... чисто ... <sniff>, это красивый мужчина TT
Лукас
13
/ * Тест * / if (anObject is / * an * / Enum) {}
Tom Fobear
bool isEnum = theObject.GetType (). IsEnum; лучше, Enum не всегда возвращает истину
Крис Ху
69

Если у вас есть Type, используйте Type.IsEnumсвойство, например:

bool isEnum = theObject.GetType().IsEnum;
Крис Шмих
источник
2
Это сработало для меня. Я не мог понять, как заставить принятый ответ работать в VB.NET.
Shea Daniels,
4
Мне действительно нужно было знать, как проверить, является ли Typeон типом Enum. +1
Натан
8

просто используйте

if (theObject is Enum)
 //is an enum
Ларами
источник
2

Для параметров универсального типа параметр можно ограничить, а не тестировать:

where T : Enum
прослушивание87
источник