Tester si un objet est un Enum

89

Je voudrais savoir si 'theObject' est une énumération (de tout type d'énumération)

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

     //do something
 }
Aran Mulholland
la source

Réponses:

203

La question est la réponse. :)

bool isEnum = theObject is Enum;
EMP
la source
13
Aimer! Et encore plus proche de la question: si (theObject is Enum) {...}
Peter Lillevold
5
Ce n'est même pas pour ça que je suis venu ici et je vous donne un point. C'est tellement ... propre ... <sniff>, c'est un bel homme TT
Lukas
12
/ * Test * / if (anObject is / * an * / Enum) {}
Tom Fobear
bool isEnum = theObject.GetType (). IsEnum; est mieux, est Enum ne revient pas toujours vrai
chris hu
67

Si vous avez un Type, utilisez la Type.IsEnumpropriété, par exemple:

bool isEnum = theObject.GetType().IsEnum;
Chris Schmich
la source
2
Cela a fonctionné pour moi. Je ne savais pas comment faire fonctionner la réponse acceptée dans VB.NET.
Shea Daniels
4
J'avais en fait besoin de savoir comment vérifier un Typeêtre de type Enum. +1
Nathan
8

juste utiliser

if (theObject is Enum)
 //is an enum
Laramie
la source
0

Pour les paramètres de type générique, le paramètre peut être contraint plutôt que testé:

where T : Enum
bugged87
la source