gpt4 book ai didi

c# - 如何找出整数值中哪些枚举项是 "hidden"

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

我们有一个数据库,其中一列包含复合枚举整数值。我们需要去除特定枚举整数值的所有这些值(如果它们有的话),但将其余值保留在原位。

[Flags]
public enum MyEnum
{
Enum1 = 1,
Enum2 = 2,
Enum3 = 4,
Enum4 = 8,
}

在数据库中我们找到

Row    MyEnumSettings
1 3 (Enum1 | Enum2)
2 8 (Enum4)
3 6 (Enum2 | Enum3)
4 14 (Enum2 | Enum3 | Enum4)

我们想从每一行中删除 Enum3 并以

结束
Row    MyEnumSettings
1 3 (no change)
2 8 (no chnage)
3 2 (removed Enum3)
4 10 (removed Enum3)

我们可以使用 Enum.IsDefined 来检查一个整数是否是枚举的一部分(不确定它是否适用于复合整数值......)。但是,我们如何检查给定的整数值是否包含枚举的特定部分?

最佳答案

如果按位相加,这应该删除枚举:

Value &= ~Enum3 

基本上,您需要对导致负掩码的 Enum3 按位求反,然后按位应用 AND 以排除为 0 的位。

相反的操作是,如果还需要加回去

Value |= Enum3

关于c# - 如何找出整数值中哪些枚举项是 "hidden",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841263/

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