我有一个可标记的枚举。
Flags
{
None = 0
A = 1
B = 2
C = 4
D = 8
}
我有一个条件,我必须检查变量
flags
是否设置为 Flags.A
以及 Flags.B
、Flags.C
或 Flags.D
中的至少一个。
当前最简单的方法是
if (
( flags == Flags.A | Flags.B )
|| ( flags == Flags.A | Flags.C )
|| ( flags == Flags.A | Flags.D )
)
{
}
我正在寻求一种方法来在一种情况下通过一次按位运算来检查它,而无需使用多个||操作。
类似这个(我尝试过但没有成功)
if ( flags == Flags.A | ( Flags.B | Flags.C | Flags.D ) )
{
}
首先,检查是否在值中设置了标志是使用
&
完成的,而不是使用|
完成的。此外,您的条件是“标志A已设置并且B、C或D之一”
所以会是这样的
if (flags & Flags.A && (flags & Flags.B || flags & Flags.C || flags && Flags.D))
根据您计划使用的语言,确切的语法可能会略有不同......