2013-04-12 94 views
5

今天我看到這個代碼:什麼是「〜」枚舉之前意味着

ViewBag.country = from p in CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures) 
           select new SelectListItem 
           { 
            Text = p.EnglishName, 
            Value = p.DisplayName 
           }; 

,我無法理解。 「〜」 - 這是一個錯誤?據我所知,「〜」放在析構函數之前。但這是枚舉。而這個代碼編譯!

+0

http://stackoverflow.com/q/93744/284240 –

+1

'〜'不是唯一具有多個不相關含義的符號。有'*':指針和乘法幾乎沒有關係。 – hvd

+1

@CuongLe不是;在個別比特級別,0&= 1 => 0,其中0^1 => 1或者舉一個具體例子:3&5 => 2,3,5 => 6。在這個例子中,3和5是二元'0011'和'0101',故意選擇創建一個真值表。如果'&〜'與'^'相等,結果將是相同的。 –

回答

6

它是按位否定運算符。

~ Operator (C# Reference)

~操作者對其運算數執行, 具有反轉每個比特的效果的按位求補操作。按位補碼 運算符預定義爲int,uint,longulong

而且因爲整型操作通常都可以在枚舉可以使用~與上面所列類型的支持枚舉。

+4

對於用FlagsAttribute標記的枚舉很有用(和其他按位運算符一樣)。 – Oded