C#:将枚举名称作为字符串

时间:2010-04-30 19:06:35

标签: c# enums

假设我有这门课程:

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);

在方法FooBar中我需要做什么才能拥有string foobarNever == "never"

4 个答案:

答案 0 :(得分:18)

changeFreq.ToString()将为您提供枚举值的字符串表示。

答案 1 :(得分:1)

string foobarNever =“never”:)

或者,你为什么不这样做:

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

答案 2 :(得分: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
}

答案 3 :(得分:1)

用您的ENUM替换代码示例中的Your_ENUM_List并运行此代码。

string Result = "";

Type Enum_Name= typeof(  Your_ENUM_List  );

int Enum_Number = 0;

Result = Enum.ToObject(Enum_Name, Enum_Number).ToString();