Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过遍历枚举来设置枚举实例_C#_Enums - Fatal编程技术网

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

C# 如何通过遍历枚举来设置枚举实例,c#,enums,C#,Enums,不知道如何用语言表达我想要的。我需要设置给定输入的枚举类型。示例代码如下: Class Foo{ enum Color{ BLUE, RED, YELLOW } public Color color; public setColor(string col){ var colorsEnum = Enum.GetNames(typeof(

不知道如何用语言表达我想要的。我需要设置给定输入的枚举类型。示例代码如下:

    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();
            }
        }
    }

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

这里的技巧是使用
Enum.Parse
。检查颜色是否有效后,只需调用
Enum.Parse

public void setColor(string col){
    if (Enum.GetNames(typeof(Color)).Contains(col)) {
        color = (Color)Enum.Parse(typeof(Color), col);
    }
}
使用
Enum.TryParse(字符串值、布尔ingnoreCase、输出颜色结果)
将字符串转换为枚举值

Color color;
if (!Enum.TryParse<Color>("blUE", true, out color))
{
    color = Color.YELLOW; // default value
}
颜色;
如果(!Enum.TryParse(“蓝色”,真,外色))
{
color=color.YELLOW;//默认值
}
试试小提琴:

你的意思是?那很有效,谢谢!那太好了,但对我来说不行。我在问题中没有说,但我确实需要遍历所有枚举并检查输入字符串是否包含颜色。因为输入可以是“香蕉黄”。