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

 我来答
刺任芹O
2022-11-16 · TA获得超过6.2万个赞
知道顶级答主
回答量:38.7万
采纳率:99%
帮助的人:8705万
展开全部

1、分配不同。

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

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

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

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

2、继承不同。

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

3、释放方式不同。

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

4、属性不同。

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

5、null上的不同。

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

6、参数传递上的不同。

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式