Fio*_*ite 1 c# enums parsing bitwise-operators
我的枚举:
[Flags]
public enum EqualityOperator
{
Equal,
NotEqual,
LessThan,
LessThanOrEqual,
GreaterThan,
GreaterThanOrEqual,
Like,
NotLike,
In,
NotIn
}
Run Code Online (Sandbox Code Playgroud)
我解析它的代码:
var operatorVal = (EqualityOperator)Enum.Parse(typeof (EqualityOperator), filterInfo[3]);
Run Code Online (Sandbox Code Playgroud)
当我调试,我可以看到,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
}
Run Code Online (Sandbox Code Playgroud)
Like解析的原因LessThan | GreaterThan是因为你已经定义了它,LessThan它的值为2且GreaterThan值为4.如果你采用按位或者这些,你最终会得到LessThan | GreaterThan = 6.但是看,Like有6你定义你的枚举的价值!所以,它确实解析了"正确".
不过我会坦率地告诉你,虽然我没有看到标记这个枚举的重点Flags.关键Flags是你可以对枚举值进行按位运算.为什么你认为你需要对这个枚举的值进行按位运算?
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |