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
 }

Réponses:


203

La question est la réponse. :)

bool isEnum = theObject is Enum;

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;

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


0

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

where T : Enum
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.