C#值类型和引用类型的区别

如题所述

第1个回答  2022-11-16

1、分配不同。

值类型分配在线程堆栈上(管理由操作系统负责),引用类型分配在托管堆上(管理由垃圾回收器GC负责)。

管理指内存空间的分配和释放:

变量本身是存储在堆栈上的(无论是值类型变量还是引用类型变量);

但是对于实际数据:引用类型存在托管堆上,值类型存在堆栈。

2、继承不同。

值类型继承自valueType,valueType继承自System.Object;引用类型直接继承自System.Object。

3、释放方式不同。

值类型在作用域内结束时,会被操作系统自释放,减少托管堆压力;引用类型则靠GC。因此值类型在性能上由优势。

4、属性不同。

值类型是密封的,不能作为基类。引用类型一般具有继承性.

5、null上的不同。

值类型不能为null,默认初始化为该类型的默认值;引用类型默认初始化为null。

6、参数传递上的不同。

值类型作为参数传递时,不影响本身。引用类型作为参数传递时,会改变最终该变量的值。

相似回答