在下面的代码中,x的值是多少,为什么?
bool x =true;
x &= false;
x是错误的,因为(true & false) == false。
&=是指&操作符,就像+=是指加号操作符一样。
x &= false;
是以下内容的简写:
x = x & false;
因此,在你的代码中:true&false解析为false。
x &= false;
是相同的意思。
x = x & false;
这个操作符可以用于验证...
valid = True;
valid &= firstname.isValid();
valid &= lastname.isValid();
valid &= email.isValid();
if(valid)
// do something;
x &= false
是“只是”的缩写形式。
x = x & false
在那段代码结束时,x 将会变为 false。
&= 是一个赋值运算符,还有很多类似的运算符(+=、-=、*=、/=、|= 等等)。它们只是一种简便的方式,在变量上执行某个操作,并将结果赋回到该变量中。
& 运算符是一个逻辑“与”运算符,它总是评估表达式的两个部分。除非两个操作数都为真,否则 & 返回 false。x &= y 是 x = x & y 的简写。
在 C# 中更常见的用法是 && 运算符,它返回相同的值,但一旦找到 false 值就停止评估操作数。这与返回值的函数的副作用有关。例如:
if(ConnectToDatabase() && ExecuteQuery())
无论如何都会运行ConnectToDatabase(),但仅在ConnectToDatabase()返回true时才会运行ExecuteQuery。在这种情况下,如果数据库没有连接,您不想尝试运行查询。
另一方面:
if(VerifyIdentity() & RegisterRequest())
将始终执行VerifyIdentity()和RegisterRequest(),然后评估它们组合返回值的真实性。