簡単な質問(私は思う):これらのコードのどれがC#でより速く実行されるでしょうか?
newSpeed = newSpeed > maxSpeed ? maxSpeed : newSpeed;
また
if (newSpeed > maxSpeed)
{
newSpeed = maxSpeed;
}
簡単な質問(私は思う):これらのコードのどれがC#でより速く実行されるでしょうか?
newSpeed = newSpeed > maxSpeed ? maxSpeed : newSpeed;
また
if (newSpeed > maxSpeed)
{
newSpeed = maxSpeed;
}
1つ目は常に割り当てを行うのに対し、2つ目は常に割り当てを行うとは限らないため、場合によっては2つ目がより高速になると思います。
たとえば、の場合newSpeed <= maxSpeed
、割り当ては行われず、比較のみが行われます。
justnSが言ったように、コンパイル中に三項演算子はifステートメントに変換されますが、三項演算子を使用する場合は、ifとelseの部分が必要になりますが、ifステートメントにはelseがありません。したがって、コードを数百万回または数十億回実行すると、顕著な違いが生じる可能性があります。ただし、通常のプログラムを作成する場合は問題ありません。
この場合、コンパイラは3行を取り、ifステートメントを作成します...したがって、まったく同じものになります。
リンク: http: //www.dotnetperls.com/ternary