gpt4 book ai didi

.net - 挣扎于枚举标志

转载 作者:行者123 更新时间:2023-12-04 06:27:16 24 4
gpt4 key购买 nike

我有一个枚举来表示两种状态,我想创建组合。今天早上读了一些书后,我发现了 flags 属性。我知道如果你每次都增加 2 的幂,那么二进制值只设置了一位,所以组合是可能的。

<Flags()> _
Public Enum TaskStatus
Incomplete = 1
Complete = 2
End Enum

1 = 0000001
2 = 0000010

所以 1+2 的组合将是 0000011

然后我想构建一个数据库参数来指示选择了哪些状态(如果有的话)。最好的方法是什么?我猜我不能只将二进制文件发送到我的 sp,但我不确定。

我也不明白如果枚举中的值超过 7 个,标志将如何工作?

最佳答案

为什么有 7 个值?标准整数的长度为 32 位。您可以对 64 位使用 long。如果它是 64 位应用程序,您可以有 128 位长。如果您不关心数据库内部的可读性,则没有理由不能将值作为 int 或 bigint 存储在数据库中。

此外,如果您用 HEX 表示您的值,将更容易保持 2 的幂:

Value1 = 0x1
Value2 = 0x2
Value3 = 0x4
Value4 = 0x8
Value5 = 0x10
Value6 = 0x20

要将每个值单独插入到数据库中,您将为数据库中的每个标志创建一个整数字段,然后在插入时执行以下操作:

flag1 = (int)flagEnumValue & (int) flagEnum.Value1
flag2 = (int)flagEnumValue & (int) flagEnum.Value2

这是一个按位与,你可以阅读关于 here 的内容

关于.net - 挣扎于枚举标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863220/

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