Tôi hiện đang đọc cuốn sách C# 4.0 in a Nutshell, theo cách tôi nghĩ là một cuốn sách tuyệt vời, ngay cả đối với những người lập trình nâng cao để sử dụng như một tài liệu tham khảo tốt.Enum.IsDefined với enum flagged
Tôi đã xem lại các chương về các khái niệm cơ bản, và tôi đã xem xét một mẹo để biết liệu một giá trị nào đó được xác định trong Enum khi sử dụng các enum được gắn cờ.
Cuốn sách khẳng định rằng việc sử dụng Enum.IsDefined
không hoạt động trên enums gắn cờ, và đề nghị một công việc xung quanh như thế này:
static bool IsFlagDefined(Enum e)
{
decimal d;
return (!decimal.TryParse(e.ToString(), out d);
}
này sẽ trả về đúng nếu một giá trị nhất định được quy định tại một enum được gắn cờ.
Ai đó có thể giải thích cho tôi lý do tại sao tính năng này hoạt động không?
Cảm ơn trước :)
là một trường hợp khác trong trường hợp Enum.IsDefined có thể hoạt động khác với dự kiến (hoặc có thể là mặc định (T)). Enum.IsDefined (mặc định (T)) có thể trả về cả true và _false_. mặc định (T) (trong đó T là một enum) luôn luôn trả về (T) 0 vì vậy nếu T không có giá trị hợp lệ cho (T) 0 thì kết quả là sai. Đã hạ gục tôi ít nhất một lần –