C#装箱与拆箱
第一次写博客,有什么错误,希望大家指正。这一类的文章网上有很多,之所以要写这一篇,是希望能帮助刚入门的同学快速理解它。好了,进入正题——C#装箱与拆箱:
要理解装箱与拆箱,首先要知道C#的数据类型。C#数据类型主要分为两类:值类型(int,uint,long,float,double,struct…)与引用类型(class,object,interface,string…),这两种类型的存储方式不同。如图所示:
a、值类型只需要一段单独的内存,用于存储实际的数据(栈)
b、引用类型需要两段内存。
……第一段存储实际的数据,位于堆中(堆)
……第二段是一个引用,指向对中存放数据的位置
装箱与拆箱其实就是值类型与引用类型之间的装换。
值类型—>引用类型:装箱
引用类型—>值类型:拆箱
装箱与拆箱的操作都是有系统自动完成成,只要存在两种类型之间的转换,就会有装箱与拆箱。个人认为:对于刚开始学习C#的同学来说,不必纠结于什么是装箱与拆箱,因为这都是系统自动完成的,只需要知道为什么有这两个概念就可以了。最后写一个例子,帮助理解:
int a=10;//值类型
object obj=i;//object为引用类型——装箱
int j=(int)obj;//引用类型转换为值类——拆箱
如果想更详细的了解装箱与拆箱,可以看看这一篇博客(转载):
http://blog.csdn.net/gengyudan/article/details/9142405(浅谈C#装箱与拆箱)