2012-03-16 407 views
5

可能重复:
What is the diffference between the | and || or operators?
What does | (pipe) mean in c#?单个|是什么?或&意思?

我有写在办公室的另一个开发者,谁不是在当下一些代码。我的代码有一些工作要做,但我之前没有昏迷过。我试着在这里搜索,但它剥去了我的|走出搜索线。我也不知道那个符号的名字是什么,所以不能像那样搜索它。

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

我的问题是在这种情况下单身或做什么?

+0

按位或'和按位'和'http://en.wikipedia.org/wiki/Bitwise_operation – kenny 2012-03-16 11:57:17

+0

道歉为重复的帖子,正如我在这个网站上的搜索框中提到的问题中提到的|符号。 – Andrew 2012-03-16 11:59:40

回答

7

酒吧(或管道),|是一个位OR运营商,并解释最简单的方法是,它使我们能够结合的标志。试想一下:

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

用位或运算,我们可以结合的标志,正是如此:

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

我们可以 “测试” 对于给定的标志,使用:

bool isMovable = (flags & WindowFlags .Movable); 

删除国旗是多一点在眼球上的应变:

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

此运算符表示只是OR

Binary |运算符是为整型和布尔值预定义的。对于 整数类型,|计算其操作数的按位或。对于bool 操作数,|计算其操作数的逻辑或;即当且仅当两个操作数都为假时, 结果为false。

参考here

看到所有的运营商here在C#

1

| - >逻辑/位或

& - >逻辑/位与

3

这些是按位操作。

011000101 
| 100100100 
----------- 
= 111100101 


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

单个|是按位或运算符