wiki.php 用Markdown写wiki是一种什么样的体验?

检测枚举参数(开关).md

最后更新于 2019-10-06 15:00:31

枚举类型一般情况下多作为描述性质的参数,我们可以组合不同的属性到枚举之中,而且可以很容易地从枚举对象中读取出是否包含指定的参数(开关)。

首先要如何定义一个枚举参数呢?这里只有一个最简单的定律,那就是乘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