C# 列出容量属性意外增加。。为什么?
我创建了一个列表,例如Customer对象,初始大小为0C# 列出容量属性意外增加。。为什么?,c#,list,C#,List,我创建了一个列表,例如Customer对象,初始大小为0 List<Customer> firstCustomerList = new List<Customer>(); 现在,列表的输出容量属性是4 客户对象实际上只是一个对象,而不是另一个列表。更重要的是,如果我添加3个Customer对象,然后对列表应用trimOverse()方法,它会将列表缩小到正确的大小 那么,为什么只添加一个对象就可以将列表的容量增加到4呢?容量是实际保存数据的数组的大小计数是列表中的元素数
List<Customer> firstCustomerList = new List<Customer>();
现在,列表的输出容量属性是4
客户对象实际上只是一个对象,而不是另一个列表。更重要的是,如果我添加3个Customer对象,然后对列表应用trimOverse()方法,它会将列表缩小到正确的大小
那么,为什么只添加一个对象就可以将列表的容量增加到4呢?
容量是实际保存数据的数组的大小<代码>计数
是列表中的元素数。向数组中添加元素是便宜的,只要数组足够大。由于列表不知道它将有多大,因此它必须动态调整数组大小,使其达到
容量
大小。这是非常昂贵的(您必须复制每个元素),因此它将分配比需要更多的资源来限制大小调整操作。那么,如果不只是1对象,那么数组包含什么?计数为1且容量为4的列表包含:一个大小为4(容量
)的后备数组,除了您添加的一个元素外,该数组为空,还有一个int指针,告诉列表将下一个元素写入数组的位置。所以本质上,它提前分配内存?
firstCustomerList.Add(customer1);