关于BOOLEAN运算符'|'的问题和'||'。我可以在这两个运营商之间找到的唯一区别是;使用'||'时the right side of the expression will not be evaluated if the left side is true.
除了人的偏好,为什么会使用'|'超过'||'用于布尔测试?
if(true | false)
{
do something
}
vs
if (true || false)
{
do something
}
答案 0 :(得分:17)
如果操作有副作用,这主要是一个问题:
请考虑以下事项:
using(IEnumerator iterator1 = args.GetEnumerator())
using (IEnumerator iterator2 = args.GetEnumerator())
{
while (iterator1.MoveNext() | iterator2.MoveNext())
{
//do stuff
}
}
由于MoveNext
操作会导致副作用,因此无论第一个是否为真, {/ 1>}的都可能很重要。
答案 1 :(得分:4)
为什么会使用'|'超过'||'用于布尔测试?
如果(由于某种原因)右侧有副作用,则需要发生。
然而,这通常不是一种好的做法。
答案 2 :(得分:3)
除了人的偏好,为什么会使用'|'超过'||'用于布尔测试?
正是因为可能希望评估双方。您可能需要以任何一种方式发生副作用。
这种情况很少见,但这是可行的。