Jon*_*eet 12
它部分取决于你的意思是"拆箱".在IL术语中,拆箱实际上比在C#中略微减少.在C#中,"取消装箱"总是涉及在某处复制值,而在IL中它只表示检查盒子的类型并以这种方式使值可用.
它们具有不同的性能特征:装箱需要分配新对象,但不需要进行类型检查.
IL级别的拆箱实际上只需要检查您尝试拆箱的对象是否是相同类型(或兼容的)的盒装值.然后,您需要在C#版本的拆箱中添加值复制操作.
从长远来看,我认为分配比类型检查更昂贵,特别是因为不仅预先分配成本,而且后来相应的垃圾收集.
与往常一样,您应该在实际代码的上下文中评估操作的性能成本.我不认为装箱和拆箱的成本在大多数现代.NET应用程序中都很重要,在这些应用程序中,泛型允许您将它们用于集合等.
| 归档时间: |
|
| 查看次数: |
2097 次 |
| 最近记录: |