2010-04-30 77 views
6

比方說,我有這個類:C#:反映枚舉名

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

而這個功能:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

被稱爲:

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

什麼我需要做的在方法FooBarstring foobarNever == "never"

回答

17

changeFreq.ToString()將爲您提供枚舉值的字符串表示形式。

+3

而要走另一個方向,則需要'Enum.Parse(...)'。 – 2010-04-30 19:10:28

1

串foobarNever = 「從不」 :)

或者,你爲什麼不只是在做:

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

有與枚舉交互的多種方式。爲了獲得最佳的實踐,始終與定義的類型比較枚舉:

if(changeFreq == ChangeFrequency.Never) 

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

,因爲它是更具描述性的。如果您需要將字符串值轉換爲枚舉類型,則使用

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