2010-04-30 34 views
6

Hãy nói rằng tôi có lớp học này:C#: Phản ánh enum tên

public class SiteMapEntry 
{ 
    public static enum ChangeFrequency 
    { 
     Always, 
     Hourly, 
     Daily, 
     Weekly, 
     Monthly, 
     Yearly, 
     Never 
    } 
} 

Và chức năng này:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

nào được gọi là:

string foobarNever = FooBar(SiteMapEntry.ChangeFrequency.Never); 

gì tôi cần phải làm trong phương thức FooBar để có string foobarNever == "never"?

Trả lời

17

changeFreq.ToString() sẽ cho bạn một chuỗi đại diện cho giá trị enum.

+3

Và để đi theo hướng khác, 'Enum.Parse (...)' là những gì bạn cần. –

1

chuỗi foobarNever = "không bao giờ" :)

Ngoài ra, tại sao bạn không chỉ cần thực hiện:

if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never) 
{} 
1

Có nhiều cách để tương tác với sự đếm. Đối với thực hành tốt nhất, luôn luôn so sánh một enum với kiểu định nghĩa:

if(changeFreq == ChangeFrequency.Never) 

không

if(changeFreq.ToString() == "Never") 

vì nó là mô tả nhiều hơn. Nếu bạn cần chuyển đổi giá trị chuỗi thành loại enum, thì hãy sử dụng

try 
{ 
    convertedValue = (ChangeFrequency)Enum.Parse(typeof(ChangeFrequency), stringValue); 
} 
catch 
{ 
    convertedValue = ChangeFrequency.Always; // Whatever default you want 
}