C #: получить имя перечисления в виде строки - PullRequest
6 голосов
/ 30 апреля 2010

Допустим, у меня есть этот класс:

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

И эта функция:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq)
{

}

Что называется:

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

Что мне нужно сделать в методе FooBar, чтобы получить string foobarNever == "never"?

Ответы [ 3 ]

18 голосов
/ 30 апреля 2010

changeFreq.ToString () даст вам строковое представление значения перечисления.

1 голос
/ 30 апреля 2010

Существует несколько способов взаимодействия с перечислениями. Для лучшей практики всегда сравнивайте перечисление с определенным типом:

if(changeFreq == ChangeFrequency.Never)

не

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

как более наглядно. Если вам нужно преобразовать строковое значение в тип enum, используйте

try
{
    convertedValue = (ChangeFrequency)Enum.Parse(typeof(ChangeFrequency), stringValue);
}
catch
{
    convertedValue = ChangeFrequency.Always; // Whatever default you want
}
1 голос
/ 30 апреля 2010

string foobarNever = "never":)

В качестве альтернативы, почему вы просто не делаете:

if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never)
{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...