什么是值类型和引用类型

CLR支持引用类型和值类型2种类型,他们在.Net类层次机构中的位置不同,其分配的内存方式也不同。

什么是值类型?

基元类型、枚举和结构为值类型,也就是继承自System.ValueType的类型被称为值类型,主要有以下几种:bool、byte、char、decimal、double、enum、float、int、long、sbyte、short、struct、uint、ulong、ushort。

什么是引用类型?

类、字符串、标准模块、接口、数组和委托为引用类型。他们继承自System.Object:class、interface、delegate、object、string。

特殊的System.Object

根类型System.Object很特殊,它既不是值类型也不是引用类型,并且不能实例化。所以值类型和引用类型可以隐式或显式的转换,也就是装箱和拆箱。

值类型和引用类型的区别

  值类型 引用类型
内存分配地点 分配在栈中 分配在堆中
效率 效率高,不需要地址转换 效率低,需要进行地址转换
内存回收 使用完后,立即回收 使用完后,不立即回收,等待GC回收
赋值操作 进行复制,创建一个同值新对象 只是对原有对象引用
函数参数与返回值 是对象的复制 是原有对象的引用,并不产生新的对象
类型扩展 不宜扩展 容易扩展,方便与类型扩展

如若转载,请注明出处:http://www.codingwhy.com/view/654.html

联系我们

在线咨询: 点击这里给我发消息

邮件:731000228@qq.com