日期:2014-05-18  浏览次数:20855 次

都说C#里一切皆为对象,既然如此为什么还会有装箱呢?
都说C#里一切皆为对象,既然如此为什么还会有装箱呢?

------解决方案--------------------
虽然引用类型和值类型都是对象,但内存分配的位置不一样,一个在堆一个在栈
要从栈到堆就要装箱运过去

------解决方案--------------------
值类型 也是对象
把值类型转为引用类型才叫装箱

比如:日本人是人,美国人也是人
日本人偷渡到美国,那就把日本人装进集中箱,运输到美国,这叫装箱
------解决方案--------------------
我上面已经说了,装箱拆箱这个过程是跟值类型和引用类型的转换相关,跟所谓的“对象”没有一点关系。

你第一句就错了,“对象都是引用类型”
http://technet.microsoft.com/zh-cn/magazine/ms173110.aspx
------解决方案--------------------
对象是都是对象,但是默认一部分对象创建和使用是放在栈里,另一部分对象创建和使用放在堆里,如果想把放在栈里的放进堆里去,就是装箱,再放回栈来,就是拆箱
------解决方案--------------------
一切类型都是从Object继承下来的,包括值类型,ValueType也是从Object继承而来