什么单一| 或&是什么意思?

And*_*rew 5 c#

可能重复:
|之间的差异是什么 和|| 还是运营商?
什么做的 (管)是指c#?

我有一些代码是由办公室的另一位开发人员编写的,目前还没有.我在他的代码上有一些工作要做,但我以前没有昏迷.我尝试在这里搜索,但它剥离了我的| 离开搜索行.我也不知道该符号的名称是什么,所以无法像那样搜索它.

this.Action.Values[key] = (int)this.Action.Values[key] | 1;
Run Code Online (Sandbox Code Playgroud)

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

Moo*_*ice 7

Bar(或管道)|是一个按位OR运算符,最简单的解释方法是它允许我们组合标志.考虑:

[Flags]
public enum WindowFlags
{
    None = 0, 
    Movable = 1,
    HasCloseBox = 2,
    HasMinimizeBox = 4,
    HasMaximizeBox = 8
}
Run Code Online (Sandbox Code Playgroud)

使用按位OR运算符,我们可以组合标志,因此:

WindowFlags flags = WindowFlags .Movable | WindowFlags .HasCloseBox | WindowFlags .HasMinimizeBox;
Run Code Online (Sandbox Code Playgroud)

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

bool isMovable = (flags & WindowFlags .Movable);
Run Code Online (Sandbox Code Playgroud)

删除标志对眼球来说有点紧张:

flags &= ~WindowFlags.HasCloseBox;  // remove HasCloseBox flag
Run Code Online (Sandbox Code Playgroud)