Sprawdź, czy obiekt jest Enum

90

Chciałbym wiedzieć, czy „theObject” jest wyliczeniem (dowolnego typu)

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

     //do something
 }
Aran Mulholland
źródło

Odpowiedzi:

206

Pytanie jest odpowiedzią. :)

bool isEnum = theObject is Enum;
EMP
źródło
13
Kocham to! A jeszcze bliżej pytania: czy (obiekt jest Enum) {...}
Peter Lillevold
5
Nie po to tu przyszedłem i daję ci punkt. Jest taki ... czysty ... <sniff>, to piękny człowiek TT
Lukas
12
/ * Test * / if (anObject to / * an * / Enum) {}
Tom Fobear,
bool isEnum = theObject.GetType (). IsEnum; jest lepsze, czy Enum nie zawsze zwraca prawdę
chris hu
69

Jeśli posiadasz Type, skorzystaj z Type.IsEnumnieruchomości np:

bool isEnum = theObject.GetType().IsEnum;
Chris Schmich
źródło
2
To zadziałało dla mnie. Nie mogłem wymyślić, jak sprawić, by zaakceptowana odpowiedź działała w VB.NET.
Shea Daniels
4
Właściwie musiałem wiedzieć, jak sprawdzić, czy Typejest typem Enum. +1
Nathan,
8

po prostu użyj

if (theObject is Enum)
 //is an enum
Laramie
źródło
1

W przypadku parametrów typu ogólnego parametr można ograniczyć, a nie testować:

where T : Enum
bugged87
źródło