Có rất nhiều câu hỏi ở đây về việc chuyển đổi chuỗi thành giá trị enum. Nói chung, câu trả lời trông giống như những câu trả lời trên this question:Tại sao đối tượng Enum.Parse() trả lại?
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
Trong khi đó là một câu trả lời hoàn toàn hợp lý, và bạn có thể viết một phương pháp để đơn giản hóa cuộc gọi, nó không trả lời câu hỏi của tại sao Enum. Phân tích cú pháp() trả về một số object
thay vì giá trị enum thích hợp. Tại sao tôi phải truyền nó đến StatusEnum
?
Edit:
Về cơ bản, câu hỏi là tại sao là một chức năng như thế này không nằm trong lớp Enum?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Chức năng này hoạt động hoàn toàn tốt, thực hiện chính xác những gì bạn mong đợi. StatusEnum e = Enum.Parse<StatusEnum>("Active");
.
@ SpYk3HH - Enums không * có * giá trị. Chúng * là * giá trị. Chúng là những giá trị xảy ra có quá tải thông thường cho '.ToString()', nhưng chúng vẫn chỉ là giá trị. – Bobson
.NET 4.0+ có ['Enum.TryParse'] (http://msdn.microsoft.com/en-us/library/dd783499 (v = vs.100)) –
@ SpYk3HH giá trị của kiểu enum là một số số nguyên có thể được liên kết với một trong các trường của loại enum. Kích thước của số nguyên có thể thay đổi. Parse lấy một số chuỗi và trả về một thể hiện được đóng hộp của kiểu enum. Điều đó có thể được unboxed hay không. Câu cuối cùng của bạn cũng không có ý nghĩa gì cả. String và Boolean cũng có các thuộc tính và phương thức để làm việc. – phoog