[英]How do I test if a bitwise enum contains any values from another bitwise enum in C#?
例如。 我有以下枚舉
[Flags]
public enum Stuff
{
stuff1=1,
stuff2=2,
stuff3=4,
stuff4=8
}
所以我把mystuff設置為
mystuff = Stuff.stuff1|Stuff.stuff2;
然后我把他的材料設置為
hisstuff = Stuff.stuff2|Stuff.stuff3;
我現在如何測試這些重疊-ie hisstuff和mystuff是否至少包含一個相同的枚舉值?
如果有多種方法可以做到最有效率? (這是一場比賽)
簡單:
if((x & y) != 0) {...}
這會按位“和”,然后測試任何交叉點。
要獲取在兩個值中設置的值,請使用and( &
)運算符:
mystuff & hisstuff
這為您提供了一個只有重疊值的新值,在您的示例中僅為Stuff.stuff2
。 要檢查是否有任何值重疊,請檢查它是否為非零:
if ((mystuff & hisstuff) != 0) ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.