结论:
值类型数据存储在栈上,作用域结束回收,
引用类型数据存储在堆上,以及有关实例的一些额外数据, 比如方法索引表,在栈上存储指向堆数据的地址,
避免装箱:
装箱就是值类型需要访问引用类型的方法,比如tostring(),它需要转换成引用类型,通过override的方式,在值类型中,重写引用类型的方法,就会直接定位值类型的方式
避免拆箱:
拆箱,是值类型之前转换成引用类型了,而又想访问值类型的方法,或者字段,又要拆箱,比如struct a:interface b,如果一个object c=(object)a,如果c想访问a里面的方法,就得拆箱,可以通过把方法定义在接口里面,这样(b)c,访问方法,就不用拆箱了