C# If not (this) Or (this) or (this) - 多个条件 IF/OR

C# If not (this) Or (this) or (this) - Multiple condition IF/OR

我的情况如下:

 if (!(InRange1 || InRange2 || InRange3))
{
//Do Something
}

每个 InRange 变量都是布尔值。

期望的行为是如果这些值中的任何一个为 False 我想做某事,但它不是那样工作的。在触发事件之前,所有值都必须为 false。

是否需要写成

if (!InRange1 || !InRange2 || !InRange3)
{
//do something
}

而且,无论哪种情况,我都很好奇为什么原始声明不起作用。

你的第二个假设是正确的。

看看boolean algebra and De Morgan's law

您可以写 not(A) OR not(B) or not(C),或者 not(A AND B AND C)

所以

if (!(InRange1 && InRange2 && InRange3))
{
    //Do Something
}

if (!InRange1 || !InRange2 || InRange3)
{
    //Do Something
}

是等价的。

您可以为此使用 DeMorgan's Law

你拥有的相当于NOR。根据 DeMorgan 定律,!(A | B | C) 等同于 !A & !B & !C

你要的是NAND,所以!(A && B && C)。这与您正在寻找的完全相同 - !A | !B | !C.