gpt4 book ai didi

c# - Enum HasFlag函数实现的内部逻辑是什么

转载 作者:行者123 更新时间:2023-11-30 15:32:32 37 4
gpt4 key购买 nike

有人可以帮我理解枚举类的 HasFlag 方法的内部逻辑吗?让我先解释一下我的要求。我已经创建了一个带有标志属性的枚举,然后使用 HasFlag() 函数从位标志值中获取选定的组合。但在这里我的要求是不同的。我的数据库中有一个表,其中列出了不同的枚举值。结构如下。

EnumTypeID    EnumVal      EnumID     Description 
=========== ========== ========= ================
1 enum1 0 xxxxxxxxx
1 enum2 1 xxxxxxxxx
1 enum3 2 xxxxxxxxx
2 enum4 0 xxxxxxxxx
2 enum5 1 xxxxxxxxx

假设我有另一个表,它存储 EnumTypeID 1 的最终标志组合。因此该表列应该保存不同的组合,如

0 = Nothing selected
1 = enum1 selected
2 = enum2 selected
3 = enum1 & enum2 selected
4 = enum3 selected
5 = enum1 & enum3 selected
6 = enum2 & enum3 selected
7 = enum1 & enum2 & enum3 selected

============================================= ==============

现在我如何以编程方式(在 C# .net4.5 中)实现这一目标。我需要先查询第一个表并获取特定 EnumTypeID 的枚举列表。现在我需要从第二个表中获取所选标志的值(假设该值为 5)。那么我怎么能说基本上 enum1 和 enum3 是通过代码选择的呢?

最佳答案

正如您在下面的链接中看到的那样,HasFlag 返回 thisInstance And flag = flag 表达式的结果

Enum.HasFlag

看备注部分

如果我答对了你的问题,你需要这样的查询:

select * from SecondTable where FlagColumn & 5 = 5

关于c# - Enum HasFlag函数实现的内部逻辑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878974/

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