如何测试一个位枚举是否包含C#中另一个位枚举的任何值?
比如说。我有下面的枚举如何测试一个位枚举是否包含C#中另一个位枚举的任何值?,c#,.net,enums,bit-manipulation,C#,.net,Enums,Bit Manipulation,比如说。我有下面的枚举 [Flags] public enum Stuff { stuff1=1, stuff2=2, stuff3=4, stuff4=8 } 所以我决定 mystuff = Stuff.stuff1|Stuff.stuff2; 然后我把他的东西调好 hisstuff = Stuff.stuff2|Stuff.stuff3; 我现在如何测试这些重叠(即Histuff和mystuff)是否都包含至少一个相同的枚举值 如果有多种方法,哪种方法最有效?(
[Flags]
public enum Stuff
{
stuff1=1,
stuff2=2,
stuff3=4,
stuff4=8
}
所以我决定
mystuff = Stuff.stuff1|Stuff.stuff2;
然后我把他的东西调好
hisstuff = Stuff.stuff2|Stuff.stuff3;
我现在如何测试这些重叠(即Histuff和mystuff)是否都包含至少一个相同的枚举值
如果有多种方法,哪种方法最有效?(这是一款游戏)简单:
if((x & y) != 0) {...}
这将执行按位“and”,然后测试任何交点。要获取在两个值中设置的值,请使用and(
&
)运算符:
mystuff & hisstuff
这将为您提供一个仅包含重叠值的新值,在您的示例中仅为Stuff.stuff2
。要检查是否有任何值重叠,请检查该值是否为非零:
if ((mystuff & hisstuff) != 0) ...