Capacity  

在.NET中List的容量应该只是受到硬件限制。

属性Capacity的真正含义,是创建List时给它预分配的容量。

一旦项的数量超过了当前的Capacity,Capacity会以

Capacity = (Capacity==0)?A_VALUE_YOU_CANNOT_SURE:(Capacity*2)

的方式增长。

当使用默认构造函数创建一个List时,Capacity就是0。(或者你非要用一个0作为capacity参数调用构造)

所以当Capacity是0时,我们为List添加了第一个项目后,Capacity是多少呢?

对,是A_VALUE_YOU_CANNOT_SURE

不过,在.NET2.0和.NET4.5中,这个值看上去都是4。

            System.Diagnostics.Debug.WriteLine(string.Format("default capacity is : {0}", new List<string>().Capacity));

            int initCapacity = 0;
            List<string> l = new List<string>(initCapacity);
            System.Diagnostics.Debug.WriteLine(string.Format("constructe a list with capacity: {0}", l.Capacity));

            for (int u = 0; u < 65; ++u)
            {
                System.Diagnostics.Debug.WriteLine(string.Format("Count: {0}, Capacity: {1}", l.Count, l.Capacity));
                //l.TrimExcess();
                //System.Diagnostics.Debug.WriteLine(string.Format("    TrimExcess() -> Count: {0}, Capacity: {1}", l.Count, l.Capacity));
                l.Add("1");
            }

输出

default capacity is : 0
constructe a list with capacity: 0
Count: 0, Capacity: 0
Count: 1, Capacity: 4
Count: 2, Capacity: 4
Count: 3, Capacity: 4
Count: 4, Capacity: 4
Count: 5, Capacity: 8
Count: 6, Capacity: 8
Count: 7, Capacity: 8
Count: 8, Capacity: 8
Count: 9, Capacity: 16
Count: 10, Capacity: 16
Count: 11, Capacity: 16
Count: 12, Capacity: 16
Count: 13, Capacity: 16
Count: 14, Capacity: 16
Count: 15, Capacity: 16
Count: 16, Capacity: 16
Count: 17, Capacity: 32
Count: 18, Capacity: 32
Count: 19, Capacity: 32
Count: 20, Capacity: 32
Count: 21, Capacity: 32
Count: 22, Capacity: 32
Count: 23, Capacity: 32
Count: 24, Capacity: 32
Count: 25, Capacity: 32
Count: 26, Capacity: 32
Count: 27, Capacity: 32
Count: 28, Capacity: 32
Count: 29, Capacity: 32
Count: 30, Capacity: 32
Count: 31, Capacity: 32
Count: 32, Capacity: 32
Count: 33, Capacity: 64
Count: 34, Capacity: 64
Count: 35, Capacity: 64
Count: 36, Capacity: 64
Count: 37, Capacity: 64
Count: 38, Capacity: 64
Count: 39, Capacity: 64
Count: 40, Capacity: 64
Count: 41, Capacity: 64
Count: 42, Capacity: 64
Count: 43, Capacity: 64
Count: 44, Capacity: 64
Count: 45, Capacity: 64
Count: 46, Capacity: 64
Count: 47, Capacity: 64
Count: 48, Capacity: 64
Count: 49, Capacity: 64
Count: 50, Capacity: 64
Count: 51, Capacity: 64
Count: 52, Capacity: 64
Count: 53, Capacity: 64
Count: 54, Capacity: 64
Count: 55, Capacity: 64
Count: 56, Capacity: 64
Count: 57, Capacity: 64
Count: 58, Capacity: 64
Count: 59, Capacity: 64
Count: 60, Capacity: 64
Count: 61, Capacity: 64
Count: 62, Capacity: 64
Count: 63, Capacity: 64
Count: 64, Capacity: 64
View Code

相关文章:

  • 2021-06-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
  • 2022-12-23
猜你喜欢
  • 2021-10-11
  • 2021-10-21
  • 2022-12-23
  • 2021-11-01
  • 2021-09-20
  • 2021-07-01
  • 2022-03-02
相关资源
相似解决方案