views:

89

answers:

3

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"?

+11  A: 

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

Stewart
And to go in the other direction, `Enum.Parse(...)` is what you need.
Matt Greer
+1  A: 

string foobarNever = "never" :)

Alternatively, why aren't you just doing:

if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never)
{}
C Bauer
+1  A: 

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
}
Tejs