c#布尔运算符——普通与短路
本文关键字:短路 运算符 布尔 | 更新日期: 2023-09-27 17:52:54
关于布尔运算符'|'和'||'的问题。我能找到的这两个算子的唯一区别是;当使用'||'时,如果表达式左边为真,则不计算表达式右边的值。
在个人偏好之外,为什么要使用'|'而不是'||'进行布尔测试?
if(true | false)
{
do something
}
vs
if (true || false)
{
do something
}
如果操作有副作用,则主要是一个问题:
考虑以下内容:
using(IEnumerator iterator1 = args.GetEnumerator())
using (IEnumerator iterator2 = args.GetEnumerator())
{
while (iterator1.MoveNext() | iterator2.MoveNext())
{
//do stuff
}
}
因为MoveNext
操作会产生副作用,所以对于|
的两边都执行可能很重要,而不管第一个操作是否为真。
为什么要用'|'而不是'||'来进行布尔测试?
如果(出于某种原因)右侧有需要发生的副作用。
在个人偏好之外,为什么要使用'|'而不是'||'进行布尔测试?
正是因为可能希望两边都求值。这两种方法都可能产生副作用。