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