c#布尔运算符 - 正常与短路

gh9*_*gh9 8 c#

关于BOOLEAN运算符'|'的问题 和'||'.我可以在这两个运营商之间找到的唯一区别是; 使用'||'时 如果左侧为真,则不会评估表达式的右侧.

在人的偏好之外为什么会使用'|' 超过'||' 用于布尔测试?

if(true | false)
{
do something
}

vs 
if (true || false)
{
do something
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 17

如果操作有副作用,这主要是一个问题:

考虑以下:

using(IEnumerator iterator1 = args.GetEnumerator())
using (IEnumerator iterator2 = args.GetEnumerator())
{
    while (iterator1.MoveNext() | iterator2.MoveNext())
    {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

因为MoveNext操作引起副作用,所以无论第一个是否为真,执行的两侧可能是重要的|.

  • 好例子 :) (2认同)