.Net 的类型可以分为值类型和引用类型,值类型通常分配在线程堆栈上,并且不包含任何指向实例数据的指针。引用类型实例分配在托管堆上,变量保存了实例数据的内存引用。
1. 值类型变量只是进行数据复制,创建一个同值新对象,而引用变量的赋值仅仅是把对象的引用的指针赋给变量,使得变量引用与对象共享同一个内存地址。
2.继承结构的区别,引用类型一般都有继承性。但由于值类型是密封的,因此值类型不能作为其它任何类型的基类,但是可以单继承或者是多继承接口。另一个区别是值类型都继承自System。ValueType类,而引用类型则不会继承自System。ValueType类。
3.内存分配的区别:值类型通常分配在栈上,它的变量直接包含变量的实例,使用效率相对比较高。而引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过指针来引用实例。