2011-11-16 37 views
5

Tôi có enum như thế nàyLàm cách nào để chọn giá trị enum từ biểu diễn chuỗi của 'tên'?

public enum PetType 
{ 
    Dog = 1, 
    Cat = 2 
} 

Tôi cũng có string pet = "Dog". Làm cách nào để tôi trả lại 1? Pseudo code Tôi đang suy nghĩ về là:

select Dog_Id from PetType where PetName = pet 
+0

trùng lặp có thể xảy ra [làm thế nào để tạo ra một enum từ một chuỗi đại diện? C#] (http://stackoverflow.com/questions/1130377/how-do-i-create-an-enum-from-a-string-representation-c-sharp) – nawfal

Trả lời

13

các Enum.Parse phương pháp để có được giá trị enum từ chuỗi sử dụng, sau đó đúc để int:

string pet = "Dog"; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet); 
int petValue = (int)petType; 
0
(PetType)Enum.Parse(typeof(PetType), pet) 
3

Nếu bạn đang sử dụng Net 4 bạn có thể sử dụng Enum.TryParse

PetType result; 
if (Enum.TryParse<PetType>(pet, out result)) 
    return (int)result; 
else 
    throw something with an error message 
3

Những người khác đã đề xuất sử dụng Enum.Parse() nhưng hãy cẩn thận với phương pháp này, gây ra nó không chỉ phân tích tên của enum, mà còn cố gắng để phù hợp với giá trị của nó. Để làm cho nó rõ ràng chúng ta hãy kiểm tra ví dụ nhỏ:

PetType petTypeA = (PetType)Enum.Parse(typeof(PetType), "Dog"); 
PetType petTypeB = (PetType)Enum.Parse(typeof(PetType), "1"); 

Kết quả của cả hai phân tích các cuộc gọi sẽ được PetType.Dog (có thể được đúc để int tất nhiên).

Trong hầu hết các trường hợp, hành vi như vậy sẽ là OK, nhưng không phải luôn luôn, và điều này đáng để nhớ phương thức Enum.Parse() hoạt động như thế nào.

0

bạn có thể sử dụng một chuỗi như tham số như

int pet=1; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet.ToString()); 

Hoặc

string pet="Dog"; 
PetType petType = (PetType)Enum.Parse(typeof(PetType), pet); 
+0

Nếu bạn đã có số, bạn có thể cast nó vào giá trị enum: 'petType = (PetType) 1' –

+0

có đúng đó là kết quả hiển thị khác và câu trả lời này là trong bình luận khác –

Các vấn đề liên quan