这个运算符在这段代码中做什么& = ?? (C#)

时间:2009-02-04 17:19:18

标签: c#

在下面的代码中,x的值是什么?为什么?

bool x =true;
x &= false;

8 个答案:

答案 0 :(得分:14)

x为false,因为(true& false)== false。

& =是& as + =是+。

答案 1 :(得分:12)

x &= false;

是:

的简写
x = x & false;

所以在你的代码中:true& false解析为false。

答案 2 :(得分:2)

x &= false;

相同
x = x & false;

所以,正如moonshadow所说:虚假......

答案 3 :(得分:2)

查看此MSDN Article

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

所以换句话说,这就是说你的例子中的x是假的,因为(true和false)是假的

答案 4 :(得分:1)

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

与+ =的想法相同,您可以将其视为:

'对变量执行+操作,然后将其分配回自身'

答案 5 :(得分:1)

x &= false

只是

的简短形式
x = x & false

在该代码的末尾将为false。

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

答案 6 :(得分:1)

& operator是一个逻辑“和”,它总是计算表达式的两半。除非两个操作数都是真的,否则&返回false。 x& = y是x = x&的缩写。收率

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

if(ConnectToDatabase() && ExecuteQuery())

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

另一方面:

if(VerifyIdentity() & RegisterRequest())

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

答案 7 :(得分:1)

此运算符可用于验证...

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

if(valid)
   // do something;