摘要: 上一篇写了一下装箱拆箱的定义和IL分析,这一篇我们看下使用泛型和不使用泛型引发装箱拆箱的情况1. 使用非泛型集合时引发的装箱和拆箱操作看下面的一段代码:1var array =newArrayList();2array.Add(1);3array.Add(2);45foreach(intvalueinarray)6{7Console.WriteLine(“valueis{0}”,value);8}代码声明了一个ArrayList对象,向ArrayList中添加两个数字1,2;然后使用foreach将ArrayList中的元素打印到控制台。在这个过程中会发生两次装箱操作和两次拆箱操作,在向Arr 阅读全文
posted @ 2011-10-19 21:25 One Ivan 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。1. 装箱在值类型向引用类型转换时发生2. 拆箱在引用类型向值类型转换时发生光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了。我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码objectobj = 1;这行语句将整型常量1赋给object类型的变量obj; 众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。这行语句的IL代码如下,请注意注释部分说明:.locals init ([0]objectobjValue)//以上三行IL表示声明o 阅读全文
posted @ 2011-10-19 21:18 One Ivan 阅读(289) 评论(0) 推荐(0) 编辑