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
精彩评论