开发者

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)开发者_C百科;

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


changeFreq.ToString() will give you a string representation of the enum value.


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


You may heard that enum.toString() has performance issue, so better to use nameof(enum.x), e.g nameof(ChangeFrequency.Always) will return "Always"

https://www.youtube.com/watch?v=BoE5Y6Xkm6w&t=51s

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜