我有以下项目
Apple = 00000001(1)
芒果= 00000010(2)
香蕉= 00000100(4)
Grapes = 00001000(8)
现在我通过做或者
存储用户可以拥有的水果UserA- 00000001(Apple)或00000010(芒果)= 00000011(即3)
现在我要检查该用户是否包含Apple或Banana?直到现在我在想这个:( UserA的价值观)& (Apple | Banana)=(Apple | Banana)
即(00000011)&(00000001 | 00000100)=(00000001 | 00000100)
但它不起作用?我可以知道我错过了什么吗?
答案 0 :(得分:4)
您正在检查Apple和Banana。表达式应为(UserA's-Values)& (Apple | Banana)(!= 0)
答案 1 :(得分:0)
也可以在Enum和Struct中存储和操作位。
对于Enum:http://msdn.microsoft.com/en-us/library/cc138362.aspx
对于Struct:Bit fields in C#
枚举很好,因为.ToString()
将打印以逗号分隔的元素列表,但您仍然使用标准的AND / OR运算符来对其进行操作和测试。