冗余演员会影响演出吗?

时间:2012-05-26 15:21:53

标签: c# performance boxing

我知道装箱/拆箱会影响性能。根据MSDN,unboxing can take four times as long as an assignment。我们的代码中有许多行具有“冗余”强制转换。实际上并不需要它们,如果没有它们,代码就可以很好地编译。可能它不会损害性能,因为编译器发现不需要进行拆箱,但也许不行!也许当我们强制转换时,编译器将被迫进行不必要的拆箱。我想知道那种类型的“冗余铸造”是否也会影响性能,就像拆箱或者nop一样?

1 个答案:

答案 0 :(得分:6)

编译器省略了(int)0(object)null等真正多余的强制转换。因为无论是否使用强制转换表达式,生成的IL都完全相同,因此不存在性能损失。对于无论如何都会执行拳击转换的显式演员也是如此:

object value = 0;
object value = (object)0; // exactly the same