[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 刪除了