我知道装箱/拆箱会影响性能。根据MSDN,unboxing can take four times as long as an assignment。我们的代码中有很多行具有“冗余”强制转换。实际上并不需要它们,而没有它们,代码可以很好地编译。可能不会损害性能,因为编译器发现不需要进行拆箱操作,但也许不会!也许当我们明确地将它们强制转换时,编译器将被迫进行不必要的拆箱。我想知道这种类型的“冗余投射”是否也会像取消装箱或点动一样影响性能?
最佳答案
编译器将消除真正冗余的转换,例如(int)0
或(object)null
。由于无论您是否使用强制转换表达式,生成的IL都是完全相同的,因此不会对性能造成任何影响。对于无论如何都将执行拳击转换的显式转换也是如此:
object value = 0;
object value = (object)0; // exactly the same