找了个比较清晰的图片来比较.NET中的两个基本类型在内存分配上的区别。
![](https://www.cnblogs.com/images/cnblogs_com/yunkunyang/valuetype.png)
![](https://www.cnblogs.com/images/cnblogs_com/yunkunyang/reftype.jpg)
由此可以看出:
1. 值类型是分配在堆栈上的,而引用类型是分配到托管堆上的。
2. 引用类型有方法表,所以通过方法表可以实现继承,多态等,而值类型则不能。
3. 静态变量是保存到方发表的,所以是类型级别的。相对于readonly的变量来说,是对象级别的。
![](https://www.cnblogs.com/images/cnblogs_com/yunkunyang/valuetype.png)
![](https://www.cnblogs.com/images/cnblogs_com/yunkunyang/reftype.jpg)
由此可以看出:
1. 值类型是分配在堆栈上的,而引用类型是分配到托管堆上的。
2. 引用类型有方法表,所以通过方法表可以实现继承,多态等,而值类型则不能。
3. 静态变量是保存到方发表的,所以是类型级别的。相对于readonly的变量来说,是对象级别的。