关于布尔运算符'|'的问题 和'||'。我能发现这两个运算符之间的唯一区别是;使用“||”时 如果左侧为真,则不会计算表达式的右侧。
在个人偏好之外,为什么要使用“|” 在'||' 用于布尔测试?
if(true | false)
{
do something
}
vs
if (true || false)
{
do something
}
关于布尔运算符'|'的问题 和'||'。我能发现这两个运算符之间的唯一区别是;使用“||”时 如果左侧为真,则不会计算表达式的右侧。
在个人偏好之外,为什么要使用“|” 在'||' 用于布尔测试?
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
操作会导致副作用,所以无论第一个是否为真,执行的双方都可能很重要。|
为什么要使用'|' 在'||' 用于布尔测试?
如果(出于某种原因)右侧有您需要发生的副作用。
然而,这通常不是好的做法。
在个人偏好之外,为什么要使用“|” 在'||' 用于布尔测试?
正是因为您可能希望双方都被评估。无论哪种方式,您都可能需要发生副作用。
这很少见,但它是可行的。