gpt4 book ai didi

c# - 这两个枚举 [Flags] 声明之间有什么区别(C#)

转载 作者:行者123 更新时间:2023-11-30 13:28:21 25 4
gpt4 key购买 nike

这更像是我要求理解的问题,而不是找出问题。考虑以下两个:

[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE = 0x1,
PASSRENDER = 0x2,
DELETE = 0x4,
ACCEPTINPUT = 0x8,
FADE_IN = 0x10,
FADE_OUT = 0x20,
FADE_OUT_COMPLETE = 0x40
}

[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE,
PASSRENDER,
DELETE,
ACCEPTINPUT,
FADE_IN ,
FADE_OUT,
FADE_OUT_COMPLETE
}

如果我使用后一个枚举对某些东西进行位检查,有时会有重叠(我认为像 DELETE 这样的东西被解释为 PASSUPDATE | PASSRENDER,而在第一个例子中每个条目都相互独立(即 DELETE 只是 DELETE 并且无法使用不同标志集的组合来证明)。

最佳答案

没有明确的数字,枚举每次递增 1(即使指定了 [Flags]),所以你得到:

[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE, // = 1
PASSRENDER,// = 2
DELETE,// = 3
ACCEPTINPUT,// = 4
FADE_IN ,// = 5
FADE_OUT,// = 6
FADE_OUT_COMPLETE// = 7
}

这根本不是您想要的数字(当然也不是通常为 2 的连续幂的按位标志)

关于c# - 这两个枚举 [Flags] 声明之间有什么区别(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6088347/

25 4 0
文章推荐: javascript - 循环遍历