C#的装箱和拆箱



       谈到装箱拆箱,大概的意思就是值类型和引用类型的相互装换——值类型到引用类型叫装箱,反之就叫拆箱。

1.类型的理解
       既然是类型之间的相互转换,那首先就要说清楚类型。我们都知道Sysyem.Object类型是所有内建类型的基类。那么如何区分值类型和引用类型呢?最简单的一个区分标准就是所有的值类型都继承自System.Value,也就是说所有继承自System.ValueType的类型都是值类型,而其他类型都是引用类型。
简单的说:
     (1)值类型:整型:Int;长整型:long;浮点型:float;字符型:char;布尔型:bool;枚举:enum;结构:struct;它们统一继承 自System.ValueType。
   (2)引用类型:数组,用户定义的类、接口、委托,object,字符串等。

2.装箱和拆箱的深入理解

                                                                                Object obj = 1;
       这行语句将整型常量1赋给object类型的变量obj;我们知道常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。

要在运行时成功拆箱值类型,被拆箱的项必须是对一个对象的引用,该对象是先前通过装箱该值类型的实例创建的。 

下面举一个例子:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM