【发布时间】:2014-09-17 23:55:28
【问题描述】:
在 C# 中避免装箱的一种方法是 pass the value type by reference。我读过generic method can also be used to avoid boxing。虽然仅仅为了避免装箱而编写一个泛型方法似乎有点极端——如果类型总是相同的话。
我的问题是 - 如果编写代码以获得最佳性能并避免装箱,通过引用传递所有值类型(如 int)是否合理 - 即使所讨论的方法仅适用于对象而不是创建它?这样做有什么缺点吗?
【问题讨论】:
-
如果类型总是相同的为什么要声明采用
object的方法(这会导致装箱操作)?只需声明它采用您期望的值类型,不会有装箱。 -
如果“类型始终相同”,拳击将来自哪里?如果您的方法采用该特定类型,则没有装箱...示例代码可能会澄清它。
-
“通过引用传递所有值类型(如 int)” --- 为什么你认为它应该提高性能?
-
检查此链接stackoverflow.com/questions/3395873/… 并放置一些您尝试实现的代码示例,然后我们可以提供一些建议。
-
当您可以查看生成的代码时,假设任何事情都是毫无意义的。方便使用 idlasm.exe 很重要,您始终可以看到 BOX 指令。不,这不会发生,并且通过引用传递值是非常低效的。在您衡量您需要帮助之前,切勿提供帮助。那你看看。
标签: c# performance parameter-passing