新List <T>()和新List <T>(0)之间有区别吗

hdo*_*men 3 .net c# memory-management list

有没有之间的差异new List<T>()new List<T>(0)

可能这是一个微观优化,但其想法是忽略内存分配方面的差异.

Sco*_*ain 10

这是实际的源代码(为简洁起见,修剪了一些部分)

    static readonly T[]  _emptyArray = new T[0];  

    public List() {
        _items = _emptyArray;
    }

    public List(int capacity) {
        if (capacity < 0) ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.capacity, ExceptionResource.ArgumentOutOfRange_NeedNonNegNum);
        Contract.EndContractBlock();

        if (capacity == 0)
            _items = _emptyArray;
        else
            _items = new T[capacity];
    }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样List(),List(0)只是分配_emptyArray_items.代码(就内存占用而言)是相同的.