c#布尔运算符 – 正常与短路
关于BOOLEAN运算符’|’的问题 和’||’。 我可以在这两个运营商之间找到的唯一区别是; 当使用’||’时 如果左侧为真,则不会评估表达式的右侧。
在人的偏好之外为什么会使用’|’ 在’||’ 用于布尔测试?
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
操作会产生副作用,所以对于|
两侧都很重要 无论第一个是否为真,都要执行。
为什么会使用’|’ 在’||’ 用于布尔测试?
如果(由于某种原因)右侧有副作用,您需要发生。
然而,这通常不是好的做法。
在人的偏好之外为什么会使用’|’ 在’||’ 用于布尔测试?
正因为您可能希望对双方进行评估。 您可能需要以任何一种方式发生副作用。
这很罕见,但它是可行的。