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.代码(就内存占用而言)是相同的.