2012-05-26 89 views
2

我知道拳击/拆箱会影响表现。根据MSDN,unboxing can take four times as long as an assignment。我们的代码中有很多行都有“冗余”强制转换。实际上并不需要它们,代码在没有它们的情况下编译得很好。可能它不会损害性能,因为编译器认为不需要拆箱,但也许不会!也许当我们向他们施展时,编译器将被迫做不必要的拆箱。我想知道这种“冗余铸造”是否也会影响性能,如拆箱或nop?冗余转换是否会影响性能?

+2

您可以发表一些您正在谈论的内容吗? –

+1

你可以看看http://stackoverflow.com/questions/5278674/do-redundant-casts-get-optimized了解更多的讨论。 –

回答

6

编译器忽略了像(int)0(object)null这样的真正多余的类型转换。因为无论您是否使用演员表达式,生成的IL都是完全相同的,所以不存在性能损失。对于无论如何都要进行拳击转换的明确表演,情况也是如此:

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