2017-08-22 15 views
0

C#ユニティ3Dのゲームの更新機能でifブロックが呼び出されています。言うまでもなく、それはたくさん呼ばれるので、私は可能な限り最適化しようとしています。&&を使ってifブロックの式の順序はどうなりますか?

if (playerIsFlagged == true){ 
    if (player.distance < 10){ 
     doaction() 
    } 
} 

は今、呼び出されているすべての更新のために、私は最初に簡単なplayerIsFlaggedを確認したい、そして距離:私は私が行うために必要な2つのチェックを持っています。だから私は書いた:

if (playerIsFlagged == true && player.distance < 10){ 
    doaction() 
} 

をこの場合、コードは常にテストあれば失敗する前に、両方の変数の値をテストします、またはそれは最初(playerisFlagged)が偽であることを確認したときには、自動的に2番目の(距離)をスキップしますチェック?

つまり、どちらの場合でもパフォーマンスに違いはありますか?

+0

これらは同じです。サイドノート: '== true'をつける必要はありません。ちょうど' if(playerIsFlagged) ' – maccettura

+0

と言うことができます。私は、下垂体ではなく、二重旗を理解しています。 – raphadko

+1

@raphadko質問が重複しているという事実は、必ずしもそれが下書きされるべきであるという意味ではありません。しかし、あなたが投稿する前にもっと多くの研究をしておかなければならないと感じているので、二重引用符は下降声を得る可能性がより高いです。 –

答えて

1

最初のケースでは、playerIsFlaggedがtrueの場合、2番目の条件がチェックされます。

2番目のケースでは、playerIsFlaggedがfalseの場合、2番目のケースをスキップします。これは、すべてのshort-circuit evaluation

0

まず呼ばれ、if(booleanValue == true)が冗長である、あなただけの偽をチェックするためにif(booleanValue)またはif(!booleanValue)を書くことができます。

あなたの質問に答えて、doubleを使用すると&&は、最初のオペランドをチェックし、falseなら残りを無視します。同じ規則が二重に適用されます||

関連する問題