应该包含12个元素的列表突然包含16个元素,为什么?

时间:2012-06-08 16:41:49

标签: windows-phone-7

我正在声明如下列表,然后我将添加12个项目:

列出lstPolygonWkt = new List();

foreach(var i in items)     lstPolygonWkt.Add(i.PolygonWkt);

人们应该认为该列表现在包含12个元素,对吧? 但令我惊讶的是,该列表突然包含16个项目,然后最后4个项目为空。 我不明白为什么我的列表应该是12项突然是16项。知道为什么吗?如何使列表中只有12个项目?

我会粘贴几个屏幕截图:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:8)

每次需要增加容量时,列表会以块的形式保留内存。因此,容量报告16,但仅计算报告12.空项目有助于计数。

list类提供了TrimExcess方法来删除未使用的空间。

此外,在构造函数中预先指定容量只会导致一次内存占用(假设您没有超过该容量)。

您的屏幕截图显示12的计数,容量为16.如果内存服务,列表会尝试将其大小加倍(或者至少肯定默认为4,然后是8,然后是16)。由于您有12个项目,因此触发了从8个容量到16个容量的跳转。