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

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

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

     //do something
 }

person Aran Mulholland    schedule 27.05.2010    source источник


Ответы (4)


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

bool isEnum = theObject is Enum;
person EMP    schedule 27.05.2010
comment
Любить это! И еще ближе к вопросу: if (theObject is Enum) {...} - person Peter Lillevold; 27.05.2010
comment
Я пришел сюда даже не для этого, и я ставлю вам точку. Это так ... чисто ... ‹sniff›, это красивый мужчина T.T. - person Lukas; 27.11.2012
comment
/ * Тест * / if (anObject is / * an * / Enum) {} - person Tom Fobear; 28.06.2014
comment
bool isEnum = theObject.GetType (). IsEnum; лучше, Enum не всегда возвращает true - person chris hu; 11.01.2020

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

bool isEnum = theObject.GetType().IsEnum;
person Chris Schmich    schedule 27.05.2010
comment
Это сработало для меня. Я не мог понять, как заставить принятый ответ работать в VB.NET. - person Shea Daniels; 22.02.2011
comment
Мне действительно нужно было знать, как проверить, является ли Type типом Enum. +1 - person Nathan; 30.09.2011

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

if (theObject is Enum)
 //is an enum
person Laramie    schedule 27.05.2010

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

where T : Enum
person bugged87    schedule 18.03.2020