fox*_*eSs 8 c# boolean-logic bitwise-operators monodevelop
MonoDevelop建议转向:
if (someBoolVar)
anotherBoolVar = true;
Run Code Online (Sandbox Code Playgroud)
进入这个:
anotherBoolVar |= someBoolVar;
Run Code Online (Sandbox Code Playgroud)
它也做它,当我设置anotherBoolVar
来false
代替:
if (someBoolVar)
anotherBoolVar = false;
Run Code Online (Sandbox Code Playgroud)
变为:
anotherBoolVar &= !someBoolVar;
Run Code Online (Sandbox Code Playgroud)
有人可以解释这些陈述是如何平等的吗?
ang*_*son 12
好吧,功能上他们是等同的.
在第一种情况下,你要设置anotherBoolVar
到true
如果someBoolVar
是true
,不管什么样的价值anotherBoolVar
目前,替换表达式做到这一点.
这是短暂的:
anotherBoolVar = anotherBoolVar | someBoolVar;
Run Code Online (Sandbox Code Playgroud)
第二个替换也与它替换的代码相同,并且简称:
anotherBoolVar = anotherBoolVar & (!someBoolVar);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,解决方案隐藏在布尔变量的"按位"性质中.对于和使用反转值(~
反转someBoolVar
)将有效地说"保留所有设置的位!someBoolVar
并清除其余的",这意味着如果someBoolVar
为真,它将被反转为假,并且您将有效地清除anotherBoolVar
.
现在,你应该这样做吗?
在我看来,没有.代码更具可读性.保持,甚至可能寻找一种方法让MonoDevelop不再建议这些东西.
归档时间: |
|
查看次数: |
328 次 |
最近记录: |