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;//默认值
}
试试小提琴:
你的意思是?那很有效,谢谢!那太好了,但对我来说不行。我在问题中没有说,但我确实需要遍历所有枚举并检查输入字符串是否包含颜色。因为输入可以是“香蕉黄”。