摘要:
-C#初学者经常被问的几道辨析题,值类型与引用类型,装箱与拆箱,堆栈,这几个概念组合之间区别,看完此篇应该可以解惑。 俗话说,用思想编程的是文艺程序猿,用经验编程的是普通程序猿,用复制粘贴编程的是2B程序猿,开个玩笑^_^。 相信有过C#面试经历的人,对下面这句话一定不陌生: 值类型直接存储其值,引用类型存储对值的引用,值类型存在堆栈上,引用类型存储在托管堆上,值类型转为引用类型叫做装箱,引用类型转为值类型叫拆箱。 但仅仅背过这句话是不够的。 C#程序员不必手工管理内存,但要编写高效的代码,就仍需理解后台发生的事情。 在学校的时候老师们最常说的一句话是:概念不清。最简单的例子,我熟... 阅读全文
posted @ 2012-05-20 22:48
蹲着墙头拉红杏
阅读(1979)
评论(11)
推荐(5)
摘要:
装箱与拆箱 int i = 1; object o = i; //装箱 int j = (int)o; //拆箱 int i=1; //在堆栈中分配了一个4个字节的空间来存储变量 i 。 object o=i; 装箱的过程: 首先在堆栈中分配一个4个字节的空间来存储引用变量 o, 然后在托管堆中分配了一定的空间来存储 i 的拷贝,这个空间会比 i 所占的空间稍大些,多了一个方法表指针和一个SyncBlockIndex,并返回该内存地址。 最后把这个地址赋值给变量o,o就是指向对象的引用了。o的值不论怎么变化,i 的值也不会变,相反你 i 的值变化,o也不会变,因为它们存储在不同... 阅读全文
posted @ 2012-05-20 22:43
蹲着墙头拉红杏
阅读(211)
评论(0)
推荐(0)