我有一个组合框,在其中显示一些条目,例如:
Equals
Not Equals
Less Than
Greater Than
请注意,这些字符串包含空格。我定义了一个枚举来匹配这些条目,例如:
enum Operation{Equals, Not_Equals, Less_Than, Greater_Than};
由于不允许使用空格,因此我使用了_字符。
现在,有什么方法可以将给定的字符串自动转换为枚举元素,而无需编写循环或一组if条件,以C#实现我的自我吗?
最佳答案
我建议构建一个Dictionary<string, Operation>
以将友好名称映射到枚举常量,并在元素本身中使用常规的命名约定。
enum Operation{ Equals, NotEquals, LessThan, GreaterThan };
var dict = new Dictionary<string, Operation> {
{ "Equals", Operation.Equals },
{ "Not Equals", Operation.NotEquals },
{ "Less Than", Operation.LessThan },
{ "Greater Than", Operation.GreaterThan }
};
var op = dict[str];
另外,如果您要坚持当前的方法,可以这样做(我建议您不要这样做):
var op = (Operation)Enum.Parse(typeof(Operation), str.Replace(' ', '_'));
关于c# - C#中的字符串到枚举转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1187085/