枚举类型一般情况下多作为描述性质的参数,我们可以组合不同的属性到枚举之中,而且可以很容易地从枚举对象中读取出是否包含指定的参数(开关)。
首先要如何定义一个枚举参数呢?这里只有一个最简单的定律,那就是乘2。
比如一个参数可以定位1,那么第二个参数就是2,第三个就是4,之后以此类推即可。
采用这种方式设置枚举,就可以在 VB 中使用 Or
来将参数组合到一起,之后再通过 And
进行合取,就可以从枚举中读出是否包含指定的参数了。
一个枚举模型
<Flags()> _
Enum flags
none = 0
f1 = 1
f2 = 2
f3 = 4
f4 = 8
f5 = 16
f6 = 32
f7 = 64
f8 = 128
End Enum
判断是否包含指定的参数(开关)
Shared Function checkFlag(ByVal value As Integer, ByVal flags As Integer) As Boolean
Return (value And flags) = flags
End Function
演示代码
Dim f As flags = flags.f1 Or flags.f8
checkFlag(f, flags.f1) 'true
checkFlag(f, flags.f2) 'false
checkFlag(f, flags.f8) 'true
checkFlag(f, flags.f8 Or flags.f1) 'true
checkFlag(f, flags.f8 Or flags.f3) 'false
checkFlag(f, flags.f8 Or flags.f1 Or flags.f3) 'false