简体   繁体   中英

C#: Get Enum Name as String

Let's say I have this class:

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

And this function:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq)
{

}

Which is called:

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

What do I need to do in the method FooBar to have the string foobarNever == "never" ?

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

string foobarNever = "never" :)

Alternatively, why aren't you just doing:

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

There are multiple ways of interacting with enums. For best practice, always compare an enum with the defined type:

if(changeFreq == ChangeFrequency.Never)

not

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

as it is more descriptive. If you need to convert a string value to the enum type, then use

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

Replace Your_ENUM_List in the code example with your ENUM and run this code.

string Result = "";

Type Enum_Name= typeof(  Your_ENUM_List  );

int Enum_Number = 0;

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM