什么" |"在C#编程中意味着什么?

时间:2013-12-08 13:33:50

标签: c#

我经常阅读这样的代码:

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

在C#程序中,有时像这样的参数,这是什么意思?

我从谷歌搜索过,但没有有价值的答案,'|'无法在Google引擎中进行属性解析,也许我在搜索时使用了错误的方法。

5 个答案:

答案 0 :(得分:4)

'|'是按位or运算符,在这种情况下,它用于创建枚举值,并设置所有给定的位。

DebuggingModes是一个bitflag枚举 - 这意味着每个位都可以指示一个标志,并且单个DebuggingModes值可用于发出多个标志信号。

枚举可以使用BitFlagsAttribute

制作位标志
[FlagsAttribute]
public enum DebuggingModes
{
   Default = 0,
   DisableOptimizations = 1,
   EnableEditAndContinue = 2,
   ...
}

答案 1 :(得分:3)

在这种情况下,它似乎是Flags enum

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

所以

Types someType = Types.Type1 | Types.Type2;

意味着它有两种类型。

答案 2 :(得分:1)

这是一个bitwise OR operator iin C#。这里用于创建具有所有给定位集的enum value

  

二进制|运算符是为整数类型和bool预定义的。对于   整数类型,|计算其操作数的按位OR。对于布尔   操作数,|计算其操作数的逻辑OR;那就是   当且仅当两个操作数均为假时,结果为false。

答案 3 :(得分:1)

这是一个逻辑or运算符。有关完整说明,请参阅here

文档中的主要说明:

二进制|运算符是为整数类型和bool预定义的。对于整数类型,|计算其操作数的按位OR。对于bool操作数,|计算其操作数的逻辑OR;也就是说,当且仅当两个操作数均为假时,结果为false。

答案 4 :(得分:0)

时|用作||它是OR运算符,在这里它用作枚举值