c# - 多余的强制转换会影响性能吗?

标签 c# performance boxing

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

最佳答案

(int)0(object)null 这样的真正冗余的转换会被编译器忽略。由于无论是否使用强制转换表达式,生成的 IL 都完全相同,因此不会造成性能损失。对于显式转换也是如此,无论如何都会执行装箱转换:

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

关于c# - 多余的强制转换会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10767443/

相关文章:

java - 从unity发送数据到java android

performance - 字节数组和MemoryStream之间的区别

c# - Nullable<T> 与类似的自定义 C# 结构有何不同?

python - 单个列表上最快的嵌套循环(删除或不删除元素)

javascript - 如何最大化异步调度程序的性能?

c# - 从 int 作为对象转换为 float 需要双重转换

java - 为什么有些方法使用 boolean 类而不是原始类型?

c# - 使用 C# 与 Windows 更新交互

c# - 如何在不同层次的多态类之间保持一对一的关系?

c# - 如何从抽象类中的静态方法获取当前类型?