gpt4 book ai didi

c# - MonoDevelop 建议将 if 语句转换为位操作

转载 作者:太空狗 更新时间:2023-10-29 18:08:13 25 4
gpt4 key购买 nike

MonoDevelop 建议改变这个:

if (someBoolVar)
anotherBoolVar = true;

进入这个:

anotherBoolVar |= someBoolVar;

当我将 anotherBoolVar 设置为 false 时,它也会这样做:

if (someBoolVar)
anotherBoolVar = false;

变成:

anotherBoolVar &= !someBoolVar;

谁能解释一下这些陈述是如何相等的?

最佳答案

好吧,在功能上它们是等价的。

在第一种情况下,如果 someBoolVartrue,您希望将 anotherBoolVar 设置为 true,无论是什么anotherBoolVar 当前具有的值,替换表达式就是这样做的。

它的缩写:

anotherBoolVar = anotherBoolVar | someBoolVar;

第二个替换也和它替换的代码一样,并且是这个的缩写:

anotherBoolVar = anotherBoolVar & (!someBoolVar);

在这种情况下,解决方案隐藏在 bool 变量的“按位”性质中。 and 具有反转值(~ 反转 someBoolVar)将有效地说“保留 !someBoolVar< 中设置的所有位 并清除其余部分”,这意味着如果 someBoolVar 为 true,它将被反转为 false,并且您将有效地清除 anotherBoolVar


现在,你应该这样做吗

在我看来,没有。代码按原样更具可读性。保留,甚至可能寻找一种方法要求 MonoDevelop 以后不要建议这些事情。

关于c# - MonoDevelop 建议将 if 语句转换为位操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29279826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com