.net数组和顺序 - 澄清?

时间:2014-06-14 10:24:33

标签: c# .net arrays

.Net数组元素存储在顺序存储单元中。即使所谓的“动态”List<T>在幕后使用一个数组 - 每次添加元素 - make sure that an appropriate array is created。 (除非以预先确定的容量加以证实)

问题

为什么是这样写的?

每次寻找(当尺寸超过时) - 一个新的连续区域 - 可能是一个很大的性能损失。

他们还可以使用另一种方法,即连续细胞的n % m区域。 - 所以我们受益两者寻求性能而不需要搜索100%顺序的免费单元格。“

(设计人员是否依赖GC将压缩/碎片整理内存这一事实,因此他们总是很容易找到连续的空闲单元?)

1 个答案:

答案 0 :(得分:2)

  

他们还可以使用另一种方法,即连续细胞的n%m区域。 - 因此,我们既有利于寻求性能,又无需搜索100%顺序的空闲单元。“

无需“搜索100%顺序免费单元格”。 .NET中的分配速度非常快。

实际成本是将旧内容复制到新数组。你是对的,mxn结构可以减少一些成本。

但是总是需要权衡,而Add()的最坏情况会提高Insert(),Remove()和Seek()(this[int x])的成本会增加。