我有一个组合框,在其中显示一些条目,例如:

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/

10-13 03:14