最近我意识到 BCL 中的某些部分仍然使用一些“遗留”代码,这些代码可能是在框架 v2.0 中引入泛型之前编写的。显然,“遗留”代码的一部分可能会导致 CLR 执行大量装箱/拆箱操作。
由于过度使用拳击从来都不是一件好事,我想知道在 BCL 中是否还有其他一些关键的地方你注意到拳击发生了?谢谢
请注意,对于提到的具体示例:
因此,如果您的分析表明这是一个问题,您应该只担心它的内部。
由于 MS 从不费心修复它,因此这似乎不太可能成为任何客户的问题。
在隐藏分配静脉中,您更关心的是:
IList<T>
List<T>
但是同样,所有这些(除了枚举作为字典中的键,这需要相当大的努力来解决)只有在你需要时才应该处理
一方面,你是对的——这不好。但是埋没点网框架对你没有任何好处——你应该接受框架内部的现状,并希望在未来得到优化(例如,TransactionScope
已经从 2.0 优化到 3.5 SP1)。
希望清除它。
知识给你力量。
我最近发现了 "path" + '\' + "fileName" 是如何实现的。
中间字符'\'先装箱到一个对象,然后调用Concat(object, object, object),然后调用3次ToString,最后调用Concat(string, string, string)。
如果程序员知道这一点,他/她可能会写:“路径”+“\”+“文件名”