List.Capacity 不工作

List.Capacity does not working

List.Capacity 不工作

代码

 var xx = new List<int>();    
 xx.Add(1);
 int xxxx = xx.Capacity;// result is 4 and change to 8,12,16 while adding new item to xx list. 

但是容量不起作用,这意味着手动设置容量时不会增加

 var xx = new List<int>(1); // or xx.Capacity = 1;   
 xx.Add(1);
 int xxxx = xx.Capacity;// result is always showing 1 does not increasing like 5, 9, 13...

当您在列表中添加值时,如果列表声明的容量为 1,则容量也会自动增加。在下面的示例中,当您在列表中添加第一项时,容量增加了 4,然后您有钱添加第五项,容量增加用 4 所以输出是 8

列表的容量表示列表当前为当前对象和要添加到其中的对象预留了多少内存。列表的计数是实际添加到列表中的项目数。参考:List<> Capacity returns more items than added

    var xx = new List<int>();    
    xx.Add(1);      
    int xxxx = xx.Capacity;
    Console.WriteLine(xxxx); // output : 4
    xx.Add(2);      
    xx.Add(3);      
    xx.Add(4);      
    xx.Add(5);      
    xxxx = xx.Capacity;
    Console.WriteLine(xxxx); // output : 8

容量

Gets or sets the total number of elements the internal data structure can hold without resizing.

容量在 0 or 2^n 的表格中重新评估,5 永远不是一个选项。

var lst = new List<string>(1);            

lst.Add("T1");
lst.Add("T2");
lst.Add("T3");
lst.Add("T4");
lst.Add("T5");

这就是直接window所说的

lst.Count 0 lst.Capacity 1 lst.Count 1 lst.Capacity 1 lst.Count 2 lst.Capacity 2 lst.Count 3 lst.Capacity 4 lst.Count 4 lst.Capacity 4 lst.Count 5 lst.Capacity 8