[Flags]二进制
enum AnyThings{枚举
A=1,
B=2,
C=4,
D=8
}
枚举赋值必须是2^n才能够,目的是实现他们的二进制表示中的 1 ,不要重叠,如 1=0001 2=0010 4=0100,因此他们或运算: 1|2|4=0111
在取值的时候,直接用 enm&AnyThings.A==AnyThings.A 就能够判断是否是包含这个值,由于: 0111 & 0010 = 0010 ,可是若是你的枚举中,存在一个 3 或者6之类的,他们的二进制表示是 0011和0110,那么他们再和 1|2|4进行 与 计算的时候,也会返回自身,因此就不对了(由于1|2|4并不包含3和6),这就是为啥一开始要把他们设置为2^n的缘由。
若是想删除其中一项怎么办? 直接enm ^ AnyThings.A ,就能够把AnyThings.A取消了,如 1|2|4=0111, 0111^0010 = 0101=1|4,把 2 删除了