gpt4 book ai didi

c# - 使用未给出预期值的标志属性解析枚举

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:45 24 4
gpt4 key购买 nike

我的枚举:

        [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 |大于 = 6。但是看,Like 的值为 6,因为您已经定义了枚举!所以,它确实“正确”地解析了。

坦率地说,虽然我不认为用Flags 标记这个枚举有什么意义。 Flags 的作用是让您可以对枚举值进行按位运算。为什么您认为需要对该枚举的值进行按位运算?

关于c# - 使用未给出预期值的标志属性解析枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17859235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com