代码之家  ›  专栏  ›  技术社区  ›  João Leal

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

  •  0
  • João Leal  · 技术社区  · 7 年前

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

        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 回复  |  直到 7 年前
        1
  •  1
  •   Sweeper    7 年前

    你甚至不需要循环浏览名字,为什么不直接使用 Contains ?

    这里的诀窍是使用 Enum.Parse . 打个电话给 枚举。作语法分析 检查颜色是否有效后:

    public void setColor(string col){
        if (Enum.GetNames(typeof(Color)).Contains(col)) {
            color = (Color)Enum.Parse(typeof(Color), col);
        }
    }
    
        2
  •  0
  •   Grax32    7 年前

    使用 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