我正在声明如下列表,然后我将添加12个项目:
列出lstPolygonWkt = new List();
foreach(var i in items) lstPolygonWkt.Add(i.PolygonWkt);
人们应该认为该列表现在包含12个元素,对吧? 但令我惊讶的是,该列表突然包含16个项目,然后最后4个项目为空。 我不明白为什么我的列表应该是12项突然是16项。知道为什么吗?如何使列表中只有12个项目?
我会粘贴几个屏幕截图:
答案 0 :(得分:8)
每次需要增加容量时,列表会以块的形式保留内存。因此,容量报告16,但仅计算报告12.空项目有助于计数。
list类提供了TrimExcess
方法来删除未使用的空间。
此外,在构造函数中预先指定容量只会导致一次内存占用(假设您没有超过该容量)。
您的屏幕截图显示12的计数,容量为16.如果内存服务,列表会尝试将其大小加倍(或者至少肯定默认为4,然后是8,然后是16)。由于您有12个项目,因此触发了从8个容量到16个容量的跳转。