有没有
new List<T>()
和new List<T>(0)
之间的区别?也许这是一种微观优化,但是思路是为了了解在内存分配方面的差异。new List<T>()
和new List<T>(0)
之间的区别?也许这是一种微观优化,但是思路是为了了解在内存分配方面的差异。这里是实际的源代码(为简洁起见,某些部分已被删减)
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
。从内存占用的角度来看,这两段代码是相同的。