小编典典

如何检查是否设置了标志组合的任何标志?

all

假设我有这个枚举:

[Flags]
enum Letters
{
     A = 1,
     B = 2,
     C = 4,
     AB = A | B,
     All = A | B | C,
}

要检查例如AB是否已设置,我可以这样做:

if((letter & Letters.AB) == Letters.AB)

是否有比以下更简单的方法来检查是否设置了组合标志常量的任何标志?

if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B)

例如可以&用一些东西交换吗?


阅读 76

收藏
2022-06-21

共1个答案

小编典典

如果您想知道 letter 是否包含 AB 中的任何字母,您必须使用 AND &运算符。就像是:

if ((letter & Letters.AB) != 0)
{
    // Some flag (A,B or both) is enabled
}
else
{
    // None of them are enabled
}
2022-06-21