Testen Sie, ob ein Objekt eine Aufzählung ist

88

Ich würde gerne wissen, ob 'theObject' eine Aufzählung ist (von jedem Aufzählungstyp).

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

     //do something
 }
Aran Mulholland
quelle

Antworten:

202

Die Frage ist die Antwort. :) :)

bool isEnum = theObject is Enum;
EMP
quelle
13
Liebe es! Und noch näher an der Frage: if (theObject is Enum) {...}
Peter Lillevold
5
Dies ist nicht einmal das, wofür ich hierher gekommen bin und ich gebe Ihnen einen Punkt. Es ist so ... sauber ... <sniff>, es ist wunderschöner Mann TT
Lukas
12
/ * Test * / if (anObject ist / * an * / Enum) {}
Tom Fobear
bool isEnum = theObject.GetType (). IsEnum; ist besser, ist Enum nicht immer wahr
chris hu
67

Wenn Sie eine haben Type, verwenden Sie die Type.IsEnumEigenschaft, z.

bool isEnum = theObject.GetType().IsEnum;
Chris Schmich
quelle
2
Das hat bei mir funktioniert. Ich konnte nicht herausfinden, wie die akzeptierte Antwort in VB.NET funktioniert.
Shea Daniels
4
Eigentlich musste ich wissen, wie man nach Typeeinem Enum-Typ sucht. +1
Nathan
8

benutz einfach

if (theObject is Enum)
 //is an enum
Laramie
quelle
0

Bei generischen Typparametern kann der Parameter eher eingeschränkt als getestet werden:

where T : Enum
bugged87
quelle