Teste se um objeto é um Enum


89

Eu gostaria de saber se 'theObject' é um enum (de qualquer tipo de enum)

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

     //do something
 }

Respostas:


203

A pergunta é a resposta. :)

bool isEnum = theObject is Enum;

13
Adoro! E ainda mais perto da questão: if (theObject is Enum) {...}
Peter Lillevold

5
Não é nem para isso que vim aqui e estou te dando um ponto. É tão ... limpo ... <sniff>, é lindo homem TT
Lukas

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

bool isEnum = theObject.GetType (). IsEnum; é melhor, Enum nem sempre retorna verdadeiro
chris hu

67

Se você tiver um Type, use a Type.IsEnumpropriedade, por exemplo:

bool isEnum = theObject.GetType().IsEnum;

2
Isso funcionou para mim. Não consegui descobrir como fazer a resposta aceita funcionar no VB.NET.
Shea Daniels

4
Na verdade, eu precisava saber como verificar se Typeera do tipo Enum. +1
Nathan


0

Para parâmetros de tipo genérico, o parâmetro pode ser restringido em vez de testado:

where T : Enum
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.