2013-12-08 144 views
0

我經常看這樣的代碼:什麼是「|」意味着在C#編程?

System.Diagnostics.DebuggableAttribute.DebuggingModes.DisableOptimizations | System.Diagnostics.DebuggableAttribute.DebuggingModes.EnableEditAndContinue | System.Diagnostics.DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | System.Diagnostics.DebuggableAttribute.DebuggingModes.Default) 

在C#程序中,有時參數是這樣,這是什麼meanning?

我已經從谷歌搜索,但沒有有價值的答案,'|'在Google引擎中不能進行屬性解析,也許我在搜索時使用了錯誤的方式。

+0

當|被用作||它是OR運算符,在這裏它用作枚舉值 – donstack

+0

請參見[msdn](http://msdn.microsoft.com/ru-ru/library/kxszd0kx.aspx) – Grundy

回答

3

在這種情況下,它似乎是一個Flags enum

[Flags] 
public enum Types 
{ 
    None = 0, 
    Type1 = 1, 
    Type2 = 2, 
    Type3 = 4, 
} 

所以

Types someType = Types.Type1 | Types.Type2; 

將意味着它有兩種類型。

4

'|'是按位運算符or,在這種情況下,它用於創建枚舉值並設置所有給定位。

DebuggingModes是一個位標記枚舉 - 這意味着每個位可以指示一個標誌,並且可以使用一個值來表示多個標誌。

枚舉可以使用BitFlagsAttribute進行bitflags:

[FlagsAttribute] 
public enum DebuggingModes 
{ 
    Default = 0, 
    DisableOptimizations = 1, 
    EnableEditAndContinue = 2, 
    ... 
} 
+1

它取決於。如果你正在比較布爾值,那麼這是一個非短路或比較('||'是短路)。 對於整數類型(包括枚舉),它確實是按位或。 –

1

它是一種bitwise OR operator IIN C#。這裏用它來創建enum value以及所有給定的位組。

Binary |運算符是爲整型和布爾值預定義的。對於 整數類型,|計算其操作數的按位或。對於bool 操作數,|計算其操作數的邏輯或;即當且僅當兩個操作數都爲假時, 結果爲false。

1

這是一個合乎邏輯的or運算符。有關完整的解釋,請參閱here

在doc

主要解釋:

二進制|運算符是爲整型和布爾值預定義的。對於整數類型,|計算其操作數的按位或。對於bool操作數,|計算其操作數的邏輯或;也就是說,當且僅當它的兩個操作數都是假時,結果纔是錯誤的。

0

當|被用作||它是OR運算符,在這裏它用作枚舉值