使用按位逻辑测试标志样式的枚举值
标志样式的枚举值需要使用按位逻辑进行测试,因为它可能与任何单个值都不匹配。
[Flags]
enum FlagsEnum
{
Option1 = 1,
Option2 = 2,
Option3 = 4,
Option2And3 = Option2 | Option3;
Default = Option1 | Option3,
}
Default
值实际上是另外两个与按位 OR 合并的组合。因此,为了测试是否存在标志,我们需要使用按位 AND。
var value = FlagsEnum.Default;
bool isOption2And3Set = (value & FlagsEnum.Option2And3) == FlagsEnum.Option2And3;
Assert.True(isOption2And3Set);