Reputation: 95
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"
?
Upvotes: 8
Views: 8705
Reputation: 21
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
Upvotes: 1
Reputation: 11
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();
Upvotes: 1
Reputation: 41236
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
}
Upvotes: 1
Reputation: 5103
string foobarNever = "never" :)
Alternatively, why aren't you just doing:
if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never)
{}
Upvotes: 1
Reputation: 4028
changeFreq.ToString() will give you a string representation of the enum value.
Upvotes: 23