1 装箱
1.1概念
将值类型准换为引用类型
例如:
int n=10;
object o=n; 装箱
1.2值类型
int double decimal enum struct bool char
1.3引用类型
数组 集合 自定义类 string object类
2 拆箱
2.1 概念
将引用类型转换为值类型
例如:
int nn=(int)o; 拆箱
装箱的时候使用了什么类型,拆箱就用什么类型
则double nn=(double)o; 就不行
3 总结
3.1 装箱和拆箱的判断
string s=“123”;
int n=Convert.ToInt32(s);
并没有发生任何的装箱或者拆箱
看两个类型发生装箱或者拆箱,首先我们要观察的是发生类型转换的这个两个类型是否存在继承关系,如果没有继承关系就不会发生装箱和拆箱
int n=10;
IComparable i=n;
int和Icomparable存在继承关系,则有装箱和拆箱
3.2 总结
装箱:值类型-------->引用类型
拆箱:引用类型------>值类型
我们看两个类型之间是否发生装箱或者拆箱,首先要确定这两个类型之间是否存在继承关系。
如果存在,则有可能会发生拆箱或者装箱,
如果不存在继承关系,则不会发生装箱或者拆箱。
注意:装箱的时候使用什么类型装的箱,拆的时候也得使用对应的类型进行拆箱。(里氏转换)