C# 变量申请内存地址

这篇文章因为是和硬件存储有关,就尽量简单小白能看懂的方式说明

说到C#内存地址的问题就不得不说几个概念:

1.值类型和引用类型:

值类型和引用类型变量是很基础的问题,简单点来说常用的int,bool,float等就是C#中的值类型变量,而Interface、Class等均为引用类型变量。

那么值类型和引用类型变量有什么区别呢?简单直白的理解就是值类型在内存中是存储在堆栈上,而引用类型在内存中存储在托管堆上

那么问题又来了,这两种不同的存储有什么区别?简单来说值类型变量访问时直接访问堆栈上的存储的值即可,而引用类型需要从堆栈上访问到引用(指针),再根据指向的托管堆上的地址再访问到最后的值。所以如图:

更详细的值类型、引用类型介绍文章

2.装箱和拆箱

装箱和拆箱之前需要先知道一个知识点:所有的引用类型均继承自object

装箱、拆箱的过程简单来说就是将值类型转成引用类型(object)存储在托管堆上的过程(装箱)以及从引用类型中转回值类型的过程(拆箱)。很明显装箱、拆箱的过程会消耗更多的性能。

3.特殊的string类型

C#中有一种常用的类型,那就是字符串string&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值