这段代码中 &= 运算符是做什么用的?(c#)

4
在下面的代码中,x的值是多少,为什么?
bool x =true;
x &= false;
8个回答

14

x是错误的,因为(true & false) == false。

&=是指&操作符,就像+=是指加号操作符一样。


那么问题变成了... 为什么要使用 &= 而不仅仅是 x=false;? - Spencer Ruport
所以 '&=' 是 'x = (x & false)' 的快捷方式吗? - Newbie

12
x &= false;

是以下内容的简写:

x = x & false;

因此,在你的代码中:true&false解析为false。


2
请查看此MSDN文章
摘录:二进制和运算符是为整数类型和布尔类型预定义的。对于整数类型,&运算符计算其操作数的逻辑位与。对于布尔操作数,&运算符计算其操作数的逻辑与;也就是说,仅当其两个操作数都为true时,结果才为true。
换句话说,这意味着在您的示例中x为false,因为(true and false)为false。

2
x &= false;

是相同的意思。

x = x & false;

因此,正如moonshadow所说:false...

1

这个操作符可以用于验证...

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

if(valid)
   // do something;

1

&= 是AND赋值运算符(请参阅此MSDN页面)

它与+=的思路相同,您可以将其理解为:

“对变量执行+操作,然后将其重新分配给自身”


1
x &= false

是“只是”的缩写形式。

x = x & false

在那段代码结束时,x 将会变为 false。

&= 是一个赋值运算符,还有很多类似的运算符(+=、-=、*=、/=、|= 等等)。它们只是一种简便的方式,在变量上执行某个操作,并将结果赋回到该变量中。


1

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

在 C# 中更常见的用法是 && 运算符,它返回相同的值,但一旦找到 false 值就停止评估操作数。这与返回值的函数的副作用有关。例如:

if(ConnectToDatabase() && ExecuteQuery())

无论如何都会运行ConnectToDatabase(),但仅在ConnectToDatabase()返回true时才会运行ExecuteQuery。在这种情况下,如果数据库没有连接,您不想尝试运行查询。

另一方面:

if(VerifyIdentity() & RegisterRequest())

将始终执行VerifyIdentity()和RegisterRequest(),然后评估它们组合返回值的真实性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接