看了些资料,小结了下值类型与引用类型的区别,有需要补充的请跟帖,大家共同学习共同进步!
不同点 | 值类型 | 引用类型 | 类型分配的位置 | 分配在栈上 | 分配的托管堆上 | 基类型 | System.Value | 除System.Value之外的任意类型 | 是否可以有子类 | 不可以,因为是密封的,不能被继承 | 可以 | 参数传递的行为 | 按值传递,传的是副本 | 按引用传递,传的是引用 | 是否可以重写System.Object.Finalize() | 不能,因为值类型放在栈上 | 可以间接重写 | 是否可以为该类型定义构造函数 | 可以,但默认的构造函数要保留(自定义的要带参数) | 可以 | 生命周期 | 超出定义的作用域时就结束生命 | 当托管堆被垃圾回收就结束生命 |
|