“|=”是什么意思

What does "|=" mean

上下文:

 private bool AllowMoveEventProcessing(float time)
     {
         bool allow = Input.GetButtonDown (m_HorizontalAxis);
         allow |= Input.GetButtonDown (m_VerticalAxis);
         allow |= (time > m_NextAction);
         return allow;
     }

发现于: http://answers.unity3d.com/questions/782423/unity-46-ui-restrict-eventsystem-only-to-keyboard.html

非常感谢!

该运算符执行按位或运算并将结果分配回 allow。相当于:

bool allow = Input.GetButtonDown(m_HorizontalAxis);
allow = allow | Input.GetButtonDown(m_VerticalAxis);
allow = allow | (time > m_NextAction);
return allow;

老实说,它没有任何意义,并且会执行不必​​要的工作,因为操作不会短路。理解起来会容易得多(当然,除非代码依赖于方法调用的副作用 运行 这也是糟糕的设计):

return Input.GetButtonDown(m_HorizontalAxis) ||
    Input.GetButtonDown(m_VerticalAxis) ||
    time > m_NextAction;

该运算符是按位或。

按位或采用两个长度相等的位模式,并对每对对应位执行逻辑包含或运算。如果第一位为 1 或第二位为 1 或两位都为 1,则每个位置的结果为 1;否则,结果为 0.