C# 内存,堆栈,和Span<T>的理解

栈就是 一个循环的传送带,就象坦克的履带,而堆就相当于电梯小区,栈的一端连着中央处理器就是CPU栈是有顺序的,滚动的,堆是楼房,new了的相当于灯亮了的房间,在C#中值类似就意味着会copy了,而引用类型是小区房间的钥匙,假设房间里面有货物,如果灯亮了就说明这个房间里有货物了,货物如果是struct的,当栈上有调单,时调单中包含一组命令,需要这些房间里的货物时就会copy过来,一般就是通过方法参数传递过来,方法就是调单,copy过来的东西可能是钥匙,可能 就是货物本身,这时命令就会处理它们,有可能命令是修改房间里的货物的状态什么的包括增减等一切可能的操作,有可能会赋值到栈上进行呈现什么的,当struct包含struct时就形成了复合的值类型,这时就象一个数组这种货物是有顺序从上至下的格子结构每个或每一串格子里放着被命名的更具体的货物,这时传统的引用类型没办法通过点操作符深入进来了,只能整体复制,当遇到这种场合,Span<T>就派上用场了,它可以通过点操作符号深入进这些具体的货物上直接进行操作。除此之外Span<T>还可以用于对各类数组特别是多维复合的数组进行各种形势的切片记录形成新的操作句柄,更好的对这些大型对象进行操作这也是它的主要用途之一。

posted on 2020-03-08 01:47  ProjectDD  阅读(693)  评论(0编辑  收藏  举报