首页 / C# / 在C#中使用&= on boolean值
在C#中使用&= on boolean值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#中使用&= on boolean值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1764字,纯文字阅读大概需要3分钟。
内容图文
![在C#中使用&= on boolean值](/upload/InfoBanner/zyjiaocheng/763/e4b7ec4b66a34fb4b74ee662b65f8fa9.jpg)
我在C#中有一个名为SendEvent的方法,它返回一个bool,表示它是否成功.我想循环遍历许多对象并在它们上面调用SendEvent,最后,得到一个bool的结果变量,如果所有SendEvent调用都成功则为true,如果至少有一个失败则为false.
起初我这样做了:
bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
result = result && myObjects[i].SendEvent();
}
但这将导致如果一个失败,将不会在后续对象上调用SendEvent,因为&& amp;如果结果为false,则不会执行operator.
所以我把它转过来:
bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
result = myObjects[i].SendEvent() && result;
}
但我觉得有点难看.我可以使用bitwise& =运算符来始终执行SendEvent调用,并设置结果的值,像这样?
bool result = true;
for (int i = 0; i < myObjects.Length; i++)
{
result &= myObjects[i].SendEvent();
}
& =如何处理布尔值?它会执行操作符的两面吗?什么会在结果变量中结束?
解决方法:
正如你可以阅读here,两者兼而有之.和&&被定义为bools为“逻辑和”,但&&将短路:如果第一个操作数为假,则不会评估右侧的表达式.无论右边表达的结果如何,&&&表达将保持错误.这通常是一个“性能黑客”,但如果正确的表达有副作用,可能会抛出异常,等等,这是你必须要考虑的事情.对于||也是如此运算符,如果第一个操作数为true.
因此,如果您想先评估双方,您确实可以使用:
result = result & myObjects[i].SendEvent();
或更短:
result &= myObjects[i].SendEvent();
背景
The operation
06002
corresponds to the operation
06003
except that if
x
isfalse
,y
is not evaluated, because the
result of the AND operation isfalse
no matter what the value ofy
is. This is known as “short-circuit” evaluation.
请注意,没有&& =运算符(至少在我写这篇文章的时候).这看起来很合理,因为通常使用.. =运算符,您会期望首先计算操作数,然后对左侧的变量执行某些操作.当然,这完全是风格和品味的问题,但我认为假设的&& =并没有提供“足够的提示”,即在所有情况下都不会调用正确的操作数.
内容总结
以上是互联网集市为您收集整理的在C#中使用&= on boolean值全部内容,希望文章能够帮你解决在C#中使用&= on boolean值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。