1、值类型和引用类型的区别
任何一个值类型都是线程堆栈上的一块内存,而引用类型则是托管堆上的一块内存,值类型多个变量不能共享一款内存、但引用类型可以多个应用类型对应一个托管堆上的一块内存。
2、变量的存放位置与值类型、引用类型有关
在非托管时代,例如:VC++决定变量的存储位置是堆还是栈的是有开发人员。而在托管时代,值类型变量一定存储在线程堆栈上,引用类型一定存储在托管堆上。
3、装箱《==》拆箱是一种错误的认识
a、装箱的过程:值类型转换为引用类型时发生装箱,首先在托管堆上分配一块内存,然后将值和其他附件信息复制到托管堆上新分配的内存上。
b、拆箱过程:引用类型转换为值类型时发生拆箱,只是取出托管堆上的引用类型的值元素,并没有在线程堆栈上分配空间。
c、拆箱后复制内存:将拆箱后得到的值元素赋给在线程堆栈上的值类型。
由此可知,装箱和拆箱并不是互逆的过程,‘装箱’应该和‘拆箱/复制内存’是互逆的过程,相对而言,装箱的过程比拆箱的过程要复杂,因为装箱是在托管堆上新开辟了一块内存,而拆箱的过程仅仅是读出托管堆上的引用类型的值元素。
4、小结
在下列情况下应尽量使用引用类型的变量(后续完成)。