我读《Microsoft .NET框架程序设计(修订版)》------DoItNow的读书笔记5
关于值类型和引用类型的理解
.NET CLR中有两种数据类型 值类型和引用类型. 其中值类型是一种简单的数据类型 其是在 应用程序的线程栈上进行分配和即时内存回收的. 引用类型 是在CLR托管堆上进行内存分配的, 同时其在托管堆上分配的地址被记录在 应用程序的线程栈上, 最后他的内存回收不是即时的 其是有GC进行不定时的收集.
.NET中所有的类型 都继承于System.Object, 当然值类型也是如此. 不过值类型是通过继承ValueType类型间接的继承于Sytem.Object. 继承或间接继承于System.Object的类都是 引用类型(有特例) 包括ValueType类型. 但是经过ValueType类型的处理(具体怎么处理的我也不清楚:( ),继承于ValueType的类 便成了 值类型(有点奇怪 从引用类型继承下来的东西成了 值类型 :( ). 而有ValueType继承得到的值类型, 便不内为其他值类型的基类了,也就是说所有的值类型 都是直接继承于 ValueType.(值类型不能被继承着个也不奇怪, 继承是引用类型的专利 因为子类在获取父类的方法 属性的时候 需要使用的 应用表 只有在引用类型中才有的. )