数据有值类型与引用类型,我们通常把引用类型的常量叫做实例
一、常量存储位置不同:
值类型常量在栈中,实例在托管堆中。
二、变量与常量的对应关系不同:
值类型变量的独立性:常量本身保存在变量自带的存储空间里,一个变量对应一个常量。
引用类型变量与实例的多对一关系:变量只保存常量所在的地址,同一个实例可以被多个变量引用。
三、初始化变量时内部操作不同:
1.初始化值类型变量
当给一个值类型变量赋值,会复制常量,放入变量中。
2.初始化引用变量
当给一个引用类型变量赋值,变量中存储的是实例的地址。
3.装箱
若用一个值类型常量给一个引用类型变量赋值,CLR尝试根据该常量,包装一个实例,再把该实例地址放到变量中。
int a=5; Object o=a;//装箱,根据5被包装一个引用类型常量,用o保存对象地址。
总结:为了效率,把整型、浮点型这些常用类型设置成值类型。
但有些CLR某些函数只接受引用类型参数,因此有了装箱与拆箱来把操作值类型常量包装成相应的引用类型,方便操作它们。
原文:http://www.cnblogs.com/wllhq/p/4641029.html