是否可以使用按位运算符代替OR之类的逻辑运算符

Sha*_*nan 1 c# logical-operators

这可能是愚蠢的.但我有一个简单的疑问假设我在函数中有以下检查

bool Validate(string a , string b)
{
    if(a == null || b == null)
    {
        throw new NullReferenceException();
    }
    else
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用按位OR进行验证,如下所示

if(a == null | b == null)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 9

在布尔表达式(而不是整数等)中,主要区别在于:短路.||短路.|才不是.在大多数情况下,您需要短路,因此||更为常见.在你的情况下,它没关系,所以||应该用作更期望的选择.

重要的时间是:

if(politics.IsCeasefire() | army.LaunchTheRockets()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

VS:

if(politics.IsCeasefire() || army.LaunchTheRockets()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

第一个总是两个都做(假设没有抛出异常); 如果停火被召唤,第二次没有发射火箭.