要将字符串转换为枚举,以下哪种方法更好?

  • 这段代码:
    colorEnum color = (colorEnum)Enum.Parse(typeof(colorEnum), "Green");
    
  • 或此:
    string colorString = ...
    colorEnum color;
    switch (colorString)
    {
        case "Green":
            color = colorEnum.Green;
            break;
        case "Red":
            color = colorEnum.Red;
            break;
        case "Orange":
            color = colorEnum.Orange;
            break;
        ....
    }
    
  • 最佳答案

    您应该使用Enum.TryParse,如果失败,则可以正确处理该错误。

    样本:

         ColorsEnum colorValue;
         if (Enum.TryParse(colorString, out colorValue))
            if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
               Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
            else
               Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
         else
            Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
    

    10-06 00:56