如何通过遍历枚举来设置枚举实例

时间:2017-11-06 18:35:10

标签: c# enums

不确定如何用词表达我想要的东西。我需要在给定输入的情况下设置枚举类型。示例代码如下:

    Class Foo{
        enum Color{
           BLUE,
           RED,
           YELLOW
        }
        public Color color;

        public setColor(string col){
            var colorsEnum = Enum.GetNames(typeof(Color));
            foreach(var c in colorsEnum){
                if(c == col)
                    color = c.getEnum();
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

您甚至不需要遍历这些名称,为什么不使用Contains

这里的诀窍是使用Enum.Parse。在检查颜色有效后,只需调用Enum.Parse

public void setColor(string col){
    if (Enum.GetNames(typeof(Color)).Contains(col)) {
        color = (Color)Enum.Parse(typeof(Color), col);
    }
}

答案 1 :(得分:0)

使用Enum.TryParse<Color>(string value, bool ingnoreCase, out Color result)将字符串转换为枚举值。

Color color;
if (!Enum.TryParse<Color>("blUE", true, out color))
{
    color = Color.YELLOW; // default value
}

尝试小提琴: https://dotnetfiddle.net/7S6IFf