关于C#:|或&是什么意思?


What does a single | or & mean?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the diffference between the | and || or operators?
What does | (pipe) mean in c#?

我有一些代码是由办公室中的另一个开发人员编写的,但现在还没有。我有一些关于他的代码的工作要做,但是我以前没有昏迷过。我试着在这里搜索,但它把我的从搜索行中删除了。我也不知道这个符号的名字是什么,所以不能像这样搜索它。

1
this.Action.Values[key] = (int)this.Action.Values[key] | 1;

我的问题是,在这种情况下,单人房是做什么的?


酒吧(或管道),|是一个有点明智的OR运算符,最简单的解释方法是它允许我们组合标志。考虑:

1
2
3
4
5
6
7
8
9
[Flags]
public enum WindowFlags
{
    None = 0,
    Movable = 1,
    HasCloseBox = 2,
    HasMinimizeBox = 4,
    HasMaximizeBox = 8
}

使用按位或运算符,我们可以组合标志,从而:

1
WindowFlags flags = WindowFlags .Movable | WindowFlags .HasCloseBox | WindowFlags .HasMinimizeBox;

我们可以"测试"给定的标志,使用:

1
bool isMovable = (flags & WindowFlags .Movable);

移除旗子对眼球来说是一种更大的压力:

1
flags &= ~WindowFlags.HasCloseBox;  // remove HasCloseBox flag

这些是按位运算。

例子

1
2
3
4
5
6
7
8
9
10
  011000101
| 100100100
-----------
= 111100101


  011000101
& 100100100
-----------
= 000000100


单个是位或运算符


二进制运算符是为整型和bool预定义的。对于整数类型,计算其操作数的位或。对于布尔操作数,计算其操作数的逻辑或;也就是说,如果且仅当两个操作数都为假,则结果为假。

http://msdn.microsoft.com/en-us/library/kxszd0xx(v=vs.100).aspx


管道""是位或运算符:http://msdn.microsoft.com/en-us/library/kxszd0kx.aspx


我相信这是一个位运算符。请参阅http://en.wikipedia.org/wiki/bitwise_operation。


| --> logical/bitwise OR

& -- > logical/bitwise AND


http://en.wikipedia.org/wiki/bitwise_操作

&;=位与=按位或


这个运算符只表示OR

Binary | operators are predefined for the integral types and bool. For
integral types, | computes the bitwise OR of its operands. For bool
operands, | computes the logical OR of its operands; that is, the
result is false if and only if both its operands are false.

这里参考

在C中查看这里的所有运算符#