C# 冗余强制转换是否会影响性能?

C# 冗余强制转换是否会影响性能?,c#,performance,boxing,C#,Performance,Boxing,我知道装箱/拆箱会影响性能。根据MSDN。我们的代码中有许多行具有“冗余”强制转换。它们实际上是不需要的,没有它们,代码可以很好地编译。可能这不会影响性能,因为编译器认为不需要进行取消装箱,但可能不需要!也许当我们显式地转换它们时,编译器将被迫执行不必要的取消装箱。我想知道这种类型的“冗余强制转换”是否也会像取消装箱或nop一样影响性能?编译器会省略真正的冗余强制转换,如(int)0或(object)null。因为无论是否使用强制转换表达式,生成的IL都是完全相同的,所以没有性能损失。这同样适用

我知道装箱/拆箱会影响性能。根据MSDN。我们的代码中有许多行具有“冗余”强制转换。它们实际上是不需要的,没有它们,代码可以很好地编译。可能这不会影响性能,因为编译器认为不需要进行取消装箱,但可能不需要!也许当我们显式地转换它们时,编译器将被迫执行不必要的取消装箱。我想知道这种类型的“冗余强制转换”是否也会像取消装箱或nop一样影响性能?

编译器会省略真正的冗余强制转换,如
(int)0
(object)null
。因为无论是否使用强制转换表达式,生成的IL都是完全相同的,所以没有性能损失。这同样适用于显式强制转换,其中无论如何都要执行装箱转换:

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

你可以发布一些你正在谈论的东西的样本吗?你可以在这里寻找更多的讨论。