new List<T>()
和new List<T>(0)
之间是否存在差异?
可能这是一个微优化,但其目的是忽略内存分配的差异。
答案 0 :(得分:10)
Here is the actual source code(为简洁而修剪了一些部分)
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];
}
正如您所看到的那样,调用List()
和List(0)
只会将_emptyArray
分配给_items
。代码(就内存占用而言)是相同的。