2012-06-13 31 views
32

Cân nhắcunset cờ enum

[Flags] 
    public enum State 
    { 
     IsCool = 0x1, 
     SomethingElse = 0x2 
    } 

Tôi có một State someState và nếu một số biểu hiện để đánh giá đúng, tôi muốn bỏ đặt IsCool cờ của someStatebất của nó bị đã được thiết lập hoặc unset. Điều này có nghĩa là tôi không thể thực sự sử dụng someState ^= State.IsCool nhưng tôi có thể sử dụng cái nào?

Trả lời

74

Bạn cần tiếp cận cách này ngược lại khi đặt cờ: bitwise AND trạng thái hiện tại với phần bổ sung của cờ bạn muốn xóa.

someState &= ~State.IsCool; 
+2

Tôi đã sử dụng XOR (có điều kiện) trong thời gian dài nhất, cho đến khi tôi ngồi xuống, viết ra một số bảng chân lý và phát hiện tiếp cận AND NOT. Dễ dàng hơn nhiều! –

+1

Đẹp. Không biết toán tử '~'. – kasperhj

Các vấn đề liên quan