Bir nesnenin Enum olup olmadığını test edin


91

'TheObject' bir enum (herhangi bir enum türünde) olup olmadığını bilmek istiyorum

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

     //do something
 }

Yanıtlar:


207

Soru cevaptır. :)

bool isEnum = theObject is Enum;

14
Sevdim! Ve soruya daha da yakın: eğer (Nesne Enum'dur) {...}
Peter Lillevold

6
Buraya bunun için gelmedim ve sana bir puan veriyorum. Çok ... temiz ... <sniff>, bu güzel adam TT
Lukas

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

bool isEnum = theObject.GetType (). IsEnum; daha iyi, Enum her zaman doğru dönmüyor mu
chris hu

69

Bir mülkünüz varsa, mülkü Typekullanın Type.IsEnum, örneğin:

bool isEnum = theObject.GetType().IsEnum;

2
Bu benim için çalıştı. Kabul edilen cevabın VB.NET'te nasıl çalışmasını sağlayacağımı bulamadım.
Shea Daniels

4
Aslında Typebir Enum türü olup olmadığını nasıl kontrol edeceğimi bilmem gerekiyordu . +1
Nathan


2

Genel tip parametreleri için, parametre test edilmek yerine kısıtlanabilir:

where T : Enum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.