C#值类型和引用类型的区别
1个回答
展开全部
1、分配不同。
值类型分配在线程堆栈上(管理由操作系统负责),引用类型分配在托管堆上(管理由垃圾回收器GC负责)。
管理指内存空间的分配和释放:
变量本身是存储在堆栈上的(无论是值类型变量还是引用类型变量);
但是对于实际数据:引用类型存在托管堆上,值类型存在堆栈。
2、继承不同。
值类型继承自valueType,valueType继承自System.Object;引用类型直接继承自System.Object。
3、释放方式不同。
值类型在作用域内结束时,会被操作系统自释放,减少托管堆压力;引用类型则靠GC。因此值类型在性能上由优势。
4、属性不同。
值类型是密封的,不能作为基类。引用类型一般具有继承性.
5、null上的不同。
值类型不能为null,默认初始化为该类型的默认值;引用类型默认初始化为null。
6、参数传递上的不同。
值类型作为参数传递时,不影响本身。引用类型作为参数传递时,会改变最终该变量的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询