2013-12-08 148 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运算符,在这里它用作枚举值