枚举成员列表与按位

List of enum members vs bitwise

当我有枚举类型时:

Public Enum EnumerationType
    EnumerationMember1
    EnumerationMember2
    EnumerationMember3
    EnumerationMember4
End Enum

并且我希望能够同时select超过一名成员,

是给每个赋值 2 的幂并使用按位比较还是使用列表更好?

您确实可以为值分配 2 的幂。与 flag attribute 结合,它给出了很好的结果。

特别是当您想使用 toString 打印它时。它是 C#,但你有很好的信息 here

power of 2 解决方案确实是 C/C++ 导向的,在与用此类语言编写的库兼容时非常有用。它还提供了一种对数据库更友好的内存高效格式。

如果您想使用集合,请改用 List will have double entries issues, you will prefer to use a HashSet。它将为您提供在 combined 枚举中添加、删除或查找标签的便利,而无需使用魔法布尔运算。

您还应该问问自己:组合枚举对我来说有意义吗?

<FlagsAttribute>
Public Enum FileOption
    Readable = 1
    Writable = 2
End Enum

在这种情况下,MyFileOption.Readable Or MyFileOption.Writable 是有道理的。我的文件是可读可写的。

在我的一个应用程序中,我控制了一个可以向 PC 发送数据流的硬件,我可以选择要发送哪些流。

Public Enum HardwareStreams
    StreamA
    StreamB
    Aux1
    Aux2
End Enum

在这种情况下 HardwareStreams.StreamA Or HardwareStreams.Aux1 将不表示硬件流。但是一组这样的枚举是有意义的。

最后还是要看你枚举的用途,由你决定。