当我有枚举类型时:
Public Enum EnumerationType
EnumerationMember1
EnumerationMember2
EnumerationMember3
EnumerationMember4
End Enum
我希望当时能够选择多个成员,
最好为每个值分配2的幂并使用按位比较或使用List吗?
答案 0 :(得分:4)
实际上,您可以为值分配2的幂。与flag attribute相关联,它会产生良好的效果。
特别是当您想使用toString
进行打印时。这是C#,但你有很好的信息here。
2 解决方案的功能实际上是面向C / C ++的,并且在与用这些语言编写的库兼容时非常有用。它还提供了一种对数据库更友好的内存高效格式。
如果您想使用某个集合,List会出现双重条目问题,您更愿意使用HashSet。它将为您提供在组合枚举中添加,删除或查找标签的功能,而无需使用魔术布尔操作。
另外你应该问问自己:在我的情况下,合并的枚举是否有意义?
<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
不代表硬件流。但是一组这样的枚举将是有道理的。
最后,这取决于你的枚举的用法,这取决于你。