Dee*_*ena -1 c# boolean-logic boolean-operations
让我们说你有
class Program
{
static void Main()
{
bool a = GetFalse();
if (a)
{
a = GetTrue();
}
bool b = GetFalse();
b &= GetTrue();
}
static bool GetFalse() => (false);
static bool GetTrue() => (true);
}
Run Code Online (Sandbox Code Playgroud)
为什么GetTrue()在b已经错误的情况下执行?
&=操作员是否应该认识到它永远不能评估为真?
因为x &= y只是简写x = x & y.&没有短路,所以y无论价值如何都要评估x,即使对于bools也是如此.
对于布尔变量,具体而言,是一个短路的版本&:&&.&&=但是,没有操作员,所以你需要单独完成:
b = b && GetTrue();
Run Code Online (Sandbox Code Playgroud)