Перевірте, чи є об’єкт Enum


90

Я хотів би знати, чи 'theObject' є переліченням (будь-якого типу переліку)

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

     //do something
 }

Відповіді:


205

Питання - це відповідь. :)

bool isEnum = theObject is Enum;

13
Любіть це! І ще ближче до питання: if (theObject is Enum) {...}
Пітер Ліллевольд,

5
Це навіть не те, заради чого я сюди прийшов, і я даю вам бал. Це так ... чисто ... <sniff>, це прекрасний чоловік TT
Лукас

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

bool isEnum = theObject.GetType (). IsEnum; краще, чи не завжди Енум повертається правдою
Кріс Ху

69

Якщо у вас є Type, використовуйте Type.IsEnumвластивість, наприклад:

bool isEnum = theObject.GetType().IsEnum;

2
Це спрацювало для мене. Я не міг зрозуміти, як змусити прийняту відповідь працювати у VB.NET.
Shea Daniels

4
Мені насправді потрібно було знати, як перевірити Typeнаявність Enum. +1
Натан


1

Для параметрів загального типу параметр може бути обмежений, а не перевірений:

where T : Enum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.