C#中的引用类型

此文章可结合值类型一起了解: 值类型.

c#支持哪几种引用类型?

引用类型是指由类型的实际值引用表示的数据类型。
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
简单的说,它们指的是一个内存位置,类似于指针。
内置的 引用类型有:object、dynamic 和 string。

引用类型的一些特点

引用类型分配在托管堆上。
引用类型直接继承自System.Object。
引用类型的默认值为null。
我们由int[] arr = new int[]来理解是怎样为引用类型分配内存的。
主函数先进栈,在栈中定义一个变量arr。此时并未在堆上开辟内存,只在栈上有一小块儿内存用于储存一个地址。
接下来为arr赋值,但是右边不是一个具体值,是一个实体。这时便在堆中开辟了一块儿内存用于储存实体(分配的地址和初始化的值),
此时通过=将堆中的内存地址赋值给变量,因此引用类型储存的为变量的地址。
引用类型中的内存分布图

堆和栈的一些区别和理解

堆是由new分配内存。
栈由系统自动分配,如声明在函数中一个局部变量 int a; 系统自动在栈中为a开辟空间。
栈空间比较小,但是读取速度快。
堆空间比较大,但是读取速度慢。
栈先进先出,堆可以任意进出。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值