Enum.Parse () или Switch - PullRequest
       53

Enum.Parse () или Switch

11 голосов
/ 21 сентября 2011

Для преобразования строки в перечисление, какой из следующих способов лучше?

  1. Этот код:

    colorEnum color = (colorEnum)Enum.Parse(typeof(colorEnum), "Green");
    
  2. илиэто:

    string colorString = ...
    colorEnum color;        
    switch (colorString)
    {
        case "Green":
            color = colorEnum.Green;
            break;
        case "Red":
            color = colorEnum.Red;
            break;
        case "Orange":
            color = colorEnum.Orange;
            break;
        ....
    }
    

Ответы [ 11 ]

0 голосов
/ 21 сентября 2011

Я нахожу вариант переключателя ужасным, так как вам придется изменять переключатель каждый раз, когда вы также меняете перечисление.

Мне нравится использовать TryParse, принадлежащий вашему перечислению.Таким образом, вы можете использовать его следующим образом:

string colorString = .....
colorEnum color;

colorEnum.TryParse(colorString, out color);

Или, если вам не важен регистр строки

colorEnum.TryParse(colorString, true, out color);

Возвращаемое значение TryParse равно true, если строка быладопустимое перечисление, false, если нет.

...