.Net的类型分为两种,一种是值类型(Value Type ),另一种是引用类型(Reference Type)。这两个类型的本质区别,值类型数据是分配在栈中(先进后出),而引用类型数据分配在堆上。那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据取出来,则需要进行拆箱操作。
说到具体程序代码上, 我们可以这样总结: 装箱是将值类型转换为引用类型 ;拆箱是在已装箱的前提下将引用类型转换为值类型.
值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串等。