使用按位邏輯測試標誌樣式的列舉值

標誌樣式的列舉值需要使用按位邏輯進行測試,因為它可能與任何單個值都不匹配。

[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);