2009-02-04 54 views

回答

14

x is false,becase(true & false)== false。

& =是& as + = is to +。

+0

于是问题就变成了...为什么使用&=可言,而不仅仅是X = FALSE; ? – 2009-02-04 17:22:40

12
x &= false; 

是简写:

x = x & false; 

所以在你的代码:真&假解析为false。

2
x &= false; 

相同

x = x & false; 

所以,月影说:假的... ...

1

& =是AND赋值运算符(see this MSDN page)

这是同样的想法+ =你可以为阅读:

“的变量执行+操作,然后分配给它回到自己”

2

看看这个MSDN Article

摘录:二进制&运算符是为整型和布尔值预定义的。对于整数类型,&计算其操作数的逻辑按位与。对于bool操作数,&计算其操作数的逻辑与;也就是说,当且仅当它的两个操作数都为真时,结果才为真。

因此,换句话说,这是说,x是在你的榜样假的,因为(true和false)是假的

1
x &= false 

x = x & false 
只有很短的形式

x是假的在该代码的末尾。

& =是一个赋值操作符,它们有一堆(+ =, - =,* =,/ =,| =和更多)。它们只是对变量执行操作并将结果分配回该变量的简短方法。

1

&运算符是一个逻辑“和”,总是评估表达式的两半。除非两个操作数都为真,否则&返回false。 x & = y是x = x & y的缩写。

在C#中使用的更常见的操作符是& &,该操作符返回相同的值,但一旦找到错误的值就停止计算操作数。这与返回值的函数的副作用有关。例如:

if(ConnectToDatabase() && ExecuteQuery()) 

将在所有情况下运行ConnectToDatabase(),但只有在ConnectToDatabase()返回true时才运行ExecuteQuery。在这种情况下,如果数据库未连接,则不想尝试运行查询。

在另一方面:

if(VerifyIdentity() & RegisterRequest()) 

总会执行VerifyIdentity()和RegisterRequest(),然后评估他们的联合返回值的感实性。

1

此操作可以验证使用...

valid = True; 
valid &= firstname.isValid(); 
valid &= lastname.isValid(); 
valid &= email.isValid(); 

if(valid) 
    // do something;