我的列举: [Flags] public enum EqualityOperator { Equal, NotEqual, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like, NotLike, In, NotIn }我的解析代码:var operatorVal = (EqualityOperator)Enum.Parse(typeof (EqualityOperator), filterInfo[3]);调试时,我可以看到filterInfo[3]是"Like"但是,operatorVal作为"LessThan | GreaterThan"出现我想念什么?您不能使用Flags属性解析枚举吗? 最佳答案 您还需要指定值:[Flags]public enum EqualityOperator { Equal = 0, NotEqual = 1, LessThan = 2, LessThanOrEqual = 4, GreaterThan = 8, GreaterThanOrEqual = 16, Like = 32, NotLike = 64, In = 128, NotIn = 256 }Like解析为LessThan | GreaterThan的原因是因为如您所定义的,LessThan的值为2,而GreaterThan的值为4。如果按位或,则最终得到。但请注意,在定义枚举时,LessThan | GreaterThan = 6的值为Like!因此,它确实“正确”地进行了解析。不过,我会很坦率,不过我看不出用6标记此枚举的意义。 Flags的要点是,您可以对枚举值进行按位运算。您为什么认为需要对该枚举的值进行按位运算?关于c# - 解析具有Flags属性的枚举未提供期望值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17859235/ 10-12 06:16