List.Capacity不起作用

时间:2017-12-29 08:04:19

标签: c# list capacity

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...

2 个答案:

答案 0 :(得分:0)

当您在列表中添加值时,如果列表以容量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

答案 1 :(得分:0)

容量

  

获取或设置内部数据结构在不调整大小的情况下可以容纳的元素总数。

容量在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");

这就是即时窗口所说的

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