Kiểm tra xem một đối tượng có phải là Enum không


90

Tôi muốn biết liệu 'theObject' có phải là một enum không (thuộc bất kỳ loại enum nào)

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

     //do something
 }

Câu trả lời:


206

Câu hỏi là câu trả lời. :)

bool isEnum = theObject is Enum;

13
Yêu nó! Và thậm chí gần hơn với câu hỏi: nếu (Đối tượng là Enum) {...}
Peter Lillevold,

5
Đây thậm chí không phải là mục đích tôi đến đây và tôi cho bạn một điểm. Đó là như vậy ... sạch ... <sniff>, nó đẹp người đàn ông TT
Lukas

12
/ * Kiểm tra * / if (anObject là / * một * / Enum) {}
Tom Fobear

bool isEnum = theObject.GetType (). isEnum; tốt hơn, không phải lúc nào Enum cũng trả về true
chris hu

69

Nếu bạn có Type, hãy sử dụng thuộc Type.IsEnumtính, ví dụ:

bool isEnum = theObject.GetType().IsEnum;

2
Điều này đã làm việc cho tôi. Tôi không thể tìm ra cách làm cho câu trả lời được chấp nhận hoạt động trong VB.NET.
Shea Daniels

4
Tôi thực sự cần biết cách kiểm tra xem có Typephải là một loại Enum hay không. +1
Nathan


1

Đối với các tham số kiểu chung, tham số có thể bị hạn chế thay vì được kiểm tra:

where T : Enum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.