装箱(boxing)和拆箱(unboxing)
装箱和拆箱机制使得在C#类型系统中,任何值类型、引用类型和object类型之间进行转换,我们称这种转化为绑定连接。简单的说,有了装箱
和拆箱的概念,对任何类型的值来说最终我们都可以看作是obect类型。
1、装箱转换
装箱转换是指将一个值类型隐式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型(interface-type)。
把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object。比如:
int i = 10;
object obj = i;
也可以用显示的方式来转换
int i = 10;
object obj = object(i);
2、拆箱转换
和装箱转换正好相反,拆箱转换是指将一个对象类型显式地转换成一个值类型,或是将一个接口类型显式地转换成一个执行该接口的值类
型,拆箱的过程分为两步:首先,检查这个对象实例,看它是否为给定的值类型的装箱值。然后,把这个实例的值拷贝给值类型的变量。比如
:
int i = 10;
object obj = i;
int j = (int)obj;