0

我要声明如下列表,然后向其中添加 12 项:

列表 lstPolygonWkt = new List();

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

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

我将粘贴几个屏幕截图:

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

8

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

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

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

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

于 2012-06-08T16:44:45.280 回答