2

我遇到了一段我无法理解的代码:

public void Connect()
{
    if (!(!string.IsNullOrEmpty(_vpnConnectionName) & !string.IsNullOrEmpty(_ipToPing)))
    {
        return;
    }

    GetConnected();
}

我研究了 SO 和其他地方的单个 & 符号,发现它是一个按位 AND 操作数。然而,解释都围绕着整数。

我可以理解按位运算对整数的适用性,但它们如何适用于布尔值?

4

2 回答 2

8

It is a logical operator on bools that evaluates both sides regardless of the value of the left side.

于 2014-04-10T14:10:57.850 回答
2

For bool,&不是按位运算AND符 - 它是非短路逻辑AND运算符 - 它总是计算两个参数 - 与“通常”&&运算符相反,如果它的第一个参数是 ,它只计算它的第二个参数true

(意识到&上面的第一个链接到实际文档可能并不明显)

于 2014-04-10T14:09:50.183 回答