C#中的装箱(boxing)拆箱(unboxing)

来源:互联网 发布:tps商城软件下载 编辑:程序博客网 时间:2024/05/16 10:51
在.net中的通用类型系统(Common Type system,CTS)中,所有类型都是对象(object),都派生自System.Object。CTS支持两组类型:值类型和引用类型。如果变量是 值类型那么这个变量就包含实际的数据。也就是在内存中确实会分配那么一部分空间给这个变量并存储值,引用类型就类似一个类型安全的指针,本身并没有开辟内 存空间去存储东西。这玩意是基础,罗嗦的重复一下。
所谓装箱和拆箱是一个很抽象的概念

装箱是将值类型转换为引用类型
拆箱是将引用类型转换为值类型
利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来
例如:
int val = 100;
object obj = val;
Console.WriteLine (“对象的值 = {0}", obj);
这是一个装箱的过程,是将值类型转换为引用类型的过程

int val = 100;
object obj = val;
int num = (int) obj;
Console.WriteLine ("num: {0}", num);
这是一个拆箱的过程,是将值类型转换为引用类型,再由引用类型转换为值类型的过程

PS:被装过箱的对象才能被拆箱