2010-04-30 18 views
6

Digamos que tengo esta clase:C#: Reflejando el nombre de enumeración

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

Y esta función:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

que se llama:

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

¿Qué tengo que hacer en el método FooBar para tener el string foobarNever == "never"?

Respuesta

17

changeFreq.ToString() le dará una representación de cadena del valor enum.

+3

Y para ir en la otra dirección, 'Enum.Parse (...)' es lo que necesita. –

1

cadena foobarNever = "nunca" :)

Por otra parte, ¿por qué no te haces:

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

Existen múltiples formas de interactuar con las enumeraciones. Para las mejores prácticas, siempre comparar una enumeración con el tipo definido:

if(changeFreq == ChangeFrequency.Never) 

no

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

ya que es más descriptivo. Si necesita convertir un valor de cadena al tipo enum, use

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