我想知道C#中ArrayList的初始大小是什么?
答案 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;
应该给你初始容量。