冠军

导航

2012年2月7日

装箱拆箱与对象的比较

摘要: 看到这样的一道面试题:int i = 10;object obj = i;int j = (int) obj;分析一下程序执行中的内存处理。首先,我们可以看到这段程序定义了三个局部变量,局部变量将被定义在栈中,第一个变量比较简单,由于 i 是整形变量,所以变量 i 的值直接被保存在堆栈中。而第二行对 obj 的赋值要复杂一点点,由于 obj 的类型是 object 类型,这是引用类型,所以,在堆栈中保存的必须是一个对象的引用,而不能是一个值,此时,会发生著名的装箱,CLR 会在堆中创建一个对象,在这个对象中保存变量 i 的值,并且,还会同时保存这个值的类型,这里是整数类型。此时,在内存中将会. 阅读全文

posted @ 2012-02-07 22:23 冠军 阅读(1401) 评论(2) 推荐(0) 编辑