gpt4 book ai didi

c# - 标记没有两个值的幂的枚举

转载 作者:太空狗 更新时间:2023-10-29 21:24:17 26 4
gpt4 key购买 nike

MSDN documentation对于 Flag 属性,您应该:

Define enumeration constants in powers of two, that is, 1, 2, 4, 8, and so on. This means the individual flags in combined enumeration constants do not overlap.

...当然,我总是努力记住要这样做。但是,没有任何强制执行,如果您只是以“基本”方式创建枚举,例如...

[Flags]
public enum BrokenEnum
{
None,
FirstOption,
SecondOption,
ThirdOption
}

...它不会按预期运行。为了解决这个问题,我正在寻找某种静态代码分析(如 FxCop ),当我的代码中存在上述枚举时,它可以警告我。我能找到的最接近的此类警告是“CA1008: Enums should have zero value” ' - 这也有助于正确设计标志枚举,但还不够。

在我的代码中查找设计不正确的标志枚举的最佳方法是什么?解决方案的自动化程度越高越好。

最佳答案

有时你想要一个代表多个选项的标志枚举;在这种情况下,这不是错误。这是一个常见的例子:

[Flags]
public enum FilePermissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4,

ReadWrite = 3, // Read | Write,
ReadWriteExecute = 7 // Read | Write | Execute
}

也许是因为需要支持这些情况,这就是编译器不会导致警告或错误的原因。

关于c# - 标记没有两个值的幂的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129976/

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