C#装箱与拆箱
对于值类型与引用类型之间的转换,可以用装箱与拆箱技术来实现。
1.装箱
装箱操作是将值类型隐式地转换为引用类型。装箱一个数值会为其分配一个对象实例,并把该数值复制到新对象中。
例如:
int i = 123;
object o = i;
这条装箱语句执行的结果实在堆栈中创建了一个对象o,该对象引用了堆上int类型的数值,而该数值是付给变量i的数值备份。
2.拆箱
拆箱操作是指显式地把引用类型转换为值类型。拆箱操作包括以下两个步骤:
(1)检查对象实例,确认他是否包装了值类型的数。
(2)把实例中的值复制到值类型的变量中。
下面的语句演示了装箱和拆箱操作
int i = 123 ;
object box = i;
int j = (int) box;
可以看出,拆箱正是装箱的逆过程,但必须注意的是,装箱和拆箱必须遵循类型兼容的原则。