这篇文章因为是和硬件存储有关,就尽量简单小白能看懂的方式说明
说到C#内存地址的问题就不得不说几个概念:
1.值类型和引用类型:
值类型和引用类型变量是很基础的问题,简单点来说常用的int,bool,float等就是C#中的值类型变量,而Interface、Class等均为引用类型变量。
那么值类型和引用类型变量有什么区别呢?简单直白的理解就是值类型在内存中是存储在堆栈上,而引用类型在内存中存储在托管堆上。
那么问题又来了,这两种不同的存储有什么区别?简单来说值类型变量访问时直接访问堆栈上的存储的值即可,而引用类型需要从堆栈上访问到引用(指针),再根据指向的托管堆上的地址再访问到最后的值。所以如图:

2.装箱和拆箱
装箱和拆箱之前需要先知道一个知识点:所有的引用类型均继承自object。
装箱、拆箱的过程简单来说就是将值类型转成引用类型(object)存储在托管堆上的过程(装箱)以及从引用类型中转回值类型的过程(拆箱)。很明显装箱、拆箱的过程会消耗更多的性能。
3.特殊的string类型
C#中有一种常用的类型,那就是字符串string&#x

最低0.47元/天 解锁文章
1127

被折叠的 条评论
为什么被折叠?



