为什么这个按位OR在可空int上返回null?

Gra*_* H. 6 c#

我基本上有以下内容:

    int? myVal = null;
    myVal |= 1;
    bool stillNull = myVal == null; //returns true
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我对按位运算符/操作数行为的理解并不是非常强大,我找不到在这种情况下不会将其视为简单赋值的原因.

Oli*_*rth 9

来自MSDN:

预定义的一元和二元运算符以及值类型存在的任何用户定义的运算符也可以由可空类型使用.如果操作数为null,则这些运算符产生空值 ; 否则,运算符使用包含的值来计算结果.