2016-03-23 157 views
1

我有一個枚舉定義如下:標誌枚舉在C#

[Flags] 
public enum Number 
{ 
    first=1, 
    second=2, 
    third=4, 
    Forth=8, 
    fifth=16, 
    six=Number.second|Number.first, 
    seven=Number.second|Number.first|Number.third 

} 

我知道這是可能的枚舉值組合。

例如:

Number number1 = Number.first; 
number1 |= Number.second; 

現在,數字1是相當於Number.six

number1 |=Number.third 

現在,數字1是相當於Number.seven

在此之後,

我想獲得number1相當於Number.six

現在我的問題是:

是否有可能做反向 OR,使得數字1只包含Number.first和Number.second而Number.first,Number.second和Number.third。

我是新來的國旗枚舉,並不確定是否有這樣的事情是可能的。

+0

~(補)嘗試'NUMBER1&=〜Number.third' - 但我不知道這將與枚舉工作,但我想它。 –

+0

標誌枚舉與枚舉沒有區別,只是枚舉只是整數。 – GSerg

+0

感謝「維拉皮」這個作品。 –

回答

0

你可以這樣做number1 = number1 & Number.first這將消除Number.first其他值,如果number1沒有Number.first它得到0

也考慮使用number1.HasFlag(Number.first),因爲它通常比檢查的邏輯操作更可讀。

0

你需要&它與Number.third

number1 &= ~Number.third; 
+0

已經在評論中回答「Vera rind」 –