枚举成员列表与按位

时间:2015-02-25 12:48:30

标签: .net vb.net oop

当我有枚举类型时:

Public Enum EnumerationType
    EnumerationMember1
    EnumerationMember2
    EnumerationMember3
    EnumerationMember4
End Enum

我希望当时能够选择多个成员,

最好为每个值分配2的幂并使用按位比较或使用List吗?

1 个答案:

答案 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不代表硬件流。但是一组这样的枚举将是有道理的。

最后,这取决于你的枚举的用法,这取决于你。