相关疑难解决方法(0)

List <T>和ArrayList默认容量

我一直在用Reflector查看.NET的ListArrayList实现.

当看到Add(T项目)时,我碰到了这个.EnsureCapacity(this._size + 1):

public void Add(T item)
{
    if (this._size == this._items.Length)
    {
       this.EnsureCapacity(this._size + 1);
    }
    this._items[this._size++] = item;
    this._version++;
}
Run Code Online (Sandbox Code Playgroud)

所以EnsureCapacity看起来像这样:

private void EnsureCapacity(int min)
{
    if (this._items.Length < min)
    {
        int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
        if (num < min)
        {
            num = min;
        }
        this.Capacity = num;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么内部容量默认为4,然后以2的倍数递增(即:double)?

.net c# algorithm performance memory-management

2
推荐指数
2
解决办法
3175
查看次数

标签 统计

.net ×1

algorithm ×1

c# ×1

memory-management ×1

performance ×1