0

重複の可能性:
論理式のすべてのメソッドが実行されますか?

説明させてください:これらの2つのコードがあるとしましょう:

foreach(Object o in Objs)
    if(o is Class1 || o is Class2)
        DoSomething();

__

foreach(Object o in Objs)
    if(o is Class1)
        DoSomething();
    else if(o is Class2)
        DoSomething();

もちろん、この場合は OR の方が優れていますが、私の質問は異なり、単なる好奇心からです: 最初のケースで o が Class1 型の場合、コンパイラはコードを停止して実行しますか、それとも次に来るものをチェックしますか? 2番目のケースでそれを行います。

4

4 に答える 4

6

||つまり、最初の引数が を返すtrue場合、2 番目の引数は評価されません。このように、はい、2番目の例とほぼ同じですが、より簡潔です。

于 2012-09-21T12:22:20.863 に答える
1

|| の MSDN ドキュメント C# の演算子

条件付き OR 演算子 (||) は、bool オペランドの論理 OR を実行します。最初のオペランドが true と評価された場合、2 番目のオペランドは評価されません。最初のオペランドが false と評価された場合、2 番目の演算子は、OR 式全体が true と評価されるか false と評価されるかを決定します。

注: これは、私が知っているすべての C ライクな言語 (C、C++、Java、C#) にも当てはまります。

于 2012-09-21T12:23:07.220 に答える
1

オペレーションx || yでは、が false のy場合にのみ評価されます。x

于 2012-09-21T12:23:56.210 に答える
0

はい。

二重パイプまたは「||」ある条件が true の場合は左から右に検索し、他の条件の検索を停止してコードを実行するかどうかを示します。単純なパイプまたは「|」同じことを行いますが、すべての条件をチェックします (したがって、通常は "||" を使用することをお勧めします)。

于 2012-09-21T12:24:06.603 に答える