我想知道这是否曾经或仍然是.Net中的一个案例。
使用 exp += val 而不是 exp = exp + val。由于 exp 可以任意复杂,这可能会导致大量不必要的工作。这会强制 JIT 评估 exp 的两个副本,而且很多时候这不是必需的。第一条语句的优化比第二条要好得多,因为 JIT 可以避免两次评估 exp。
那来自codeproject中的一篇古老的文章。
cpp中还有一个:
但是,复合赋值表达式不等价于扩展版本,因为复合赋值表达式仅对 expression1 求值一次,而扩展版本对 expression1 求值两次:在加法运算和赋值运算中。