装箱拆箱
放入object和取出过程
装箱:根据值类型的值,在堆上创建一个完整的引用类型对象,并返回对象的引用,是一种隐式转换
就是将值类型转换为引用类型
有时候需要将值类型转化为引用类型来进行统一的操作和统一的存储
装箱示例:
int i=3;//这个是int类型的值类型,值为3 object oi=null; oi=i;
装箱的本质就是在堆上创建了引用类型的副本,新创建的引用类型和原来的值类型相互独立。
拆箱:将装箱后的对象转换回值类型的过程,是一种显示转换,需要手动完成
int j=(int)oi
自定义转换
为自己的结构或者类定义显式或隐式转换,为了让结构或者类可以变成一个预期相关的类型,并且使这种转换更加简单。
public static explicit(显式)/ implicit(隐式) operator 没有函数名称
显式需要用到括号强制转换。
pubilc static--静态方法 implicit--隐式 operator--转换
pubilc static--静态方法 explicit--显式 operator--转换
隐式转换:
public static implicit operator Dog(Cat cat) { }
显式转换:
隐式转换和显式转换的调用不同
即下图中
隐式转换的调用:Cat cat=dog;
显式转换的调用:Dag cat=(Dog)cat;