Menguji apakah suatu objek adalah Enum

90

Saya ingin tahu apakah 'theObject' adalah enum (dari semua jenis enum)

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

     //do something
 }
Aran Mulholland
sumber

Jawaban:

206

Pertanyaannya adalah jawabannya. :)

bool isEnum = theObject is Enum;
EMP
sumber
13
Suka! Dan bahkan lebih dekat dengan pertanyaan: if (theObject is Enum) {...}
Peter Lillevold
5
Ini bahkan bukan untuk tujuan saya datang ke sini dan saya memberi Anda satu poin. Ini sangat ... bersih ... <sniff>, ini pria yang cantik TT
Lukas
12
/ * Test * / if (anObject is / * an * / Enum) {}
Tom Fobear
bool isEnum = theObject.GetType (). IsEnum; lebih baik, apakah Enum tidak selalu membalas benar
chris hu
69

Jika Anda memiliki Type, gunakan Type.IsEnumproperti, misalnya:

bool isEnum = theObject.GetType().IsEnum;
Chris Schmich
sumber
2
Ini berhasil untuk saya. Saya tidak tahu bagaimana membuat jawaban yang diterima berfungsi di VB.NET.
Shea Daniels
4
Saya sebenarnya perlu tahu cara memeriksa Typemakhluk tipe Enum. +1
Nathan
8

gunakan saja

if (theObject is Enum)
 //is an enum
Laramie
sumber
1

Untuk parameter tipe generik, parameter dapat dibatasi daripada diuji:

where T : Enum
disadap87
sumber