8

BOOLEAN演算子に関する質問'|' および'||'。これら2つの演算子の違いは次のとおりです。'||'を使用する場合 左側が真の場合、式の右側は評価されません。

人の好みの外で、なぜ人は「|」を使うのでしょうか '||'以上 ブールテスト用ですか?

if(true | false)
{
do something
}

vs 
if (true || false)
{
do something
}
4

3 に答える 3

17

操作に副作用がある場合、これは主に問題です。

次のことを考慮してください。

using(IEnumerator iterator1 = args.GetEnumerator())
using (IEnumerator iterator2 = args.GetEnumerator())
{
    while (iterator1.MoveNext() | iterator2.MoveNext())
    {
        //do stuff
    }
}

MoveNext操作は副作用を引き起こすため、最初の操作が真であるかどうかに関係なく、の両側|実行することが重要になる場合があります。

于 2013-01-14T19:38:06.243 に答える
4

なぜ「|」を使用するのでしょうか '||'以上 ブールテスト用ですか?

(何らかの理由で)右側に発生する必要のある副作用がある場合。

ただし、これは一般的には適切な方法ではありません。

于 2013-01-14T19:36:49.550 に答える
3

人の好みの外で、なぜ人は「|」を使うのでしょうか '||'以上 ブールテスト用ですか?

両方を評価したいからです。どちらの方法でも発生する必要のある副作用があるかもしれません。

まれですが、実行可能です。

于 2013-01-14T19:35:48.160 に答える