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
 }

Odpowiedzi:


206

Pytanie jest odpowiedzią. :)

bool isEnum = theObject is Enum;

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;

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,


1

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

where T : Enum
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.