装箱与拆
装箱与拆箱是c#类型系统的核心.通过装箱与拆箱操作.能够在值类型与引用类型之间架起一座桥梁.换言之.可以轻松实现值类型与引用类型的相互转换.装相与拆箱能够统一考察类型系统.任何类型的值都可以按照对象进行处理.
装相:把值类型转换为对象类型,或者转换为由值类型执行的接口类型.把一个值类型的值装箱,也就是创建一个对象并把这个值赋给这个对象.常见的装箱转换有以下4种:
从任何值类型转换为:1:对象类型,2:system,valueType类型,3:值类型实现的任何接口类型以及从枚举类型转换为system.Enum类型.
需要注意的是:装箱转换意味着复制一个欲被装相的值.这与引用类型转换为对象类型有着很大的不同.在后者中,转换后的值继续引用同一实例.只是将他当成对象类型而已.
例子:
int i=100;
object obj=i;
拆箱:拆箱相对于装相是一个反过程,其核心是将一个引用类型显示转换为值类型,或者是将一个借口类型转换为一个实现该接口的值类型.常见的拆箱操作也有4种:1:从对象类型转换为任何值类型2:从system.valueType类型转换为任何接口类型3:从任何接口类型转换为实现该借口的任何值类型4:从system.Enum类型转换为枚举类型.拆箱的过程分为两个步骤:1.检查对象实例是否是给定的值类型的装相值.2.将值从对象实例中复制出来.
拆箱:
int i=100;
object obj = i;
int j=(int)i;