Prueba si un objeto es una enumeración


90

Me gustaría saber si 'theObject' es una enumeración (de cualquier tipo de enumeración)

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

     //do something
 }

Respuestas:


206

La pregunta es la respuesta. :)

bool isEnum = theObject is Enum;

13
¡Quiéralo! Y aún más cerca de la pregunta: si (el objeto es Enum) {...}
Peter Lillevold

5
Esto ni siquiera es para lo que vine aquí y les doy un punto. Es tan ... limpio ... <sniff>, es un hombre hermoso TT
Lukas

12
/ * Test * / if (anObject is / * an * / Enum) {}
Tom Fobear

bool isEnum = theObject.GetType (). IsEnum; es mejor, Enum no siempre se vuelve verdadero
chris hu

69

Si tiene un Type, use la Type.IsEnumpropiedad, por ejemplo:

bool isEnum = theObject.GetType().IsEnum;

2
Esto funcionó para mí. No pude averiguar cómo hacer que la respuesta aceptada funcione en VB.NET.
Shea Daniels

4
De hecho, necesitaba saber cómo verificar un Typeser del tipo Enum. +1
Nathan


1

Para los parámetros de tipo genérico, el parámetro se puede restringir en lugar de probar:

where T : Enum
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.