在c#中使用字符串分配枚举,而不使用if';s

在c#中使用字符串分配枚举,而不使用if';s,c#,string,enums,C#,String,Enums,我想知道是否有一个选项可以给枚举签名,比如说,颜色,可以选择黑白和红色,直接用一个字符串“红色”。不使用if's。。。 我的意思是我不想写: if (string1=="red") {mycolor=Color.red}; 谢谢 您可以使用Enum类中的方法: mycolor = (Color)Enum.Parse(typeof(Color), string1, true); 或 这会将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象 在第二种方法中,Bool指定操作是否不

我想知道是否有一个选项可以给枚举签名,比如说,颜色,可以选择黑白和红色,直接用一个字符串“红色”。不使用if's。。。 我的意思是我不想写:

if (string1=="red") {mycolor=Color.red};
谢谢

您可以使用
Enum
类中的方法:

mycolor = (Color)Enum.Parse(typeof(Color), string1, true);

这会将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象


在第二种方法中,Bool指定操作是否不区分大小写

布尔值的用途是什么?您可以在没有Bool的情况下使用。。请参阅my sanswer.Bool指定操作是否不区分大小写。如果布尔参数为
true
,则解析器将忽略大小写,即
red
生成与
red
red
等相同的结果。
Color ColorEnum = (Color)Enum.Parse(typeof(Color), "YourValue");
Color ColorEnum = (Color)Enum.Parse(typeof(Color), "YourValue",true);