C#中ArrayList的初始大小是多少?

时间:2009-10-14 08:30:44

标签: c#

我想知道C#中ArrayList的初始大小是什么?

6 个答案:

答案 0 :(得分:12)

0。见下文。

<击> 16。 (我必须在这个答案中添加字符,因为最少18个字符)

编辑,糟糕 - 最初的容量是16.初始大小当然是0,因为它是空的。必须学习如何阅读。或者您必须学习如何形成您的问题。 ;)

再次编辑; .NET 1.0中的ArrayList的初始容量是16.在2.0中它是4,现在 - 使用.NET 3.5 - 初始的capacty已经降低到0.我没有解释为什么,你。

当向列表中添加第一个元素时,容量将设置为4.之后,每当arraylist.Count eq arraylist.Capacity时,容量将加倍。

答案 1 :(得分:7)

ArrayList以Size = 0(因为它为空)和Capacity = 16开始。

根据需要,容量加倍,并且容量加倍是O(n)操作,其中n是新容量。因此,如果您在列表中插入5,000个元素,那么框架将使ArrayList容量增加一倍 - 并且每次加倍操作的成本是前一个的两倍。

换句话说 - 如果你知道你将把5,000个元素放在一个列表中,你最好明确地初始化它以容纳5,000个元素。

如果您知道要插入大量元素,则可以显式设置现有arraylist的容量。您也可以显式减少容量,但如果设置容量&lt;算一下,你会得到一个ArgumentOutOfRange异常。

答案 2 :(得分:5)

注意:以下看似仅适用于.NET 3.5;在以前版本的框架中,值是不同的。

根据我在这里的测试,初始大小和容量均为零:

PS> $a = new-object system.collections.arrayList
PS> $a.Capacity
0
PS> $a.count
0

另外,查看Reflector中的源代码,同样如此:

public virtual int Capacity
{
    get
    {
        return this._items.Length;
    }
    ...
}

并且_items在ctor中设置为空object[]

答案 3 :(得分:2)

创建时,ArrayList为空,因此大小为零。

除非您遇到框架1,否则根本不应使用ArrayList类。请改用强类型通用List<T>类。

答案 4 :(得分:1)

ArrayList list = new ArrayList();
在将项目添加到arrayList之前,

size = 0表示没有项目。

答案 5 :(得分:0)

试试自己。

int capacity = (new ArrayList()).Capacity;

应该给你初始容量。