在布尔值上使用起始值为 false 的 &=

本文关键字:false amp 布尔值 | 更新日期: 2023-09-27 18:35:55

给定以下代码:

var bolValue = true; //or bool bolValue if in C#
bolValue &= someBooleanExpression;
bolValue &= anotherBooleanExpression;
....

bolValue 的最终结果是真或假,并且仅当执行该行代码时 bolValue 的值为 true 时,每个表达式才会计算。为此,bolValue 的起始值必须为 true。

如何重写它以允许起始值为 false,并且仅当 bolValue 的值在每次 &= 评估之前为 false 时才允许它通过每个表达式?

在布尔值上使用起始值为 false 的 &=

Opertor &= 应该用于位掩码,而不是布尔变量。类似的东西

char flags = 0x4fee;
char A_mask = 0x0001;
flags &= A_mask; // <=> flags = flags & mask;(bitwise AND here)

所以不要将其用于布尔值,因为它不适合它们。

对于布尔值,您可以使用该值:

var result = condition1 && condition2 && condition3 && condition4 ... ;

我认为你应该做的是:

var boolValue = Expr1 || Expr2 || ...
由于短路计算

,如果它找到一个计算结果为 true 的表达式,它将停止计算其他表达式并将 true 分配给您的变量,否则它将计算下一个表达式,依此类推。