确保容量不应具有如果(新容量 < 分钟)新容量 = 最小值;



我认为if (newCapacity < min) newCapacity = min;应该删除,我已经将项目添加到了列表的全部容量,但从未在newCapacity = min;行遇到断点,有人能说出这行的目的吗?

private void EnsureCapacity(int min) {
if (_items.Length < min) {
int newCapacity = _items.Length == 0? _defaultCapacity : _items.Length * 2;
// Allow the list to grow to maximum possible capacity (~2G elements) before encountering overflow.
// Note that this check works even when _items.Length overflowed thanks to the (uint) cast
if ((uint)newCapacity > Array.MaxArrayLength) newCapacity = Array.MaxArrayLength;
if (newCapacity < min) newCapacity = min;
Capacity = newCapacity;
}
}

这是参考资料。

首先,有两个备注:

  • 如果您想建议对的进行更改或错误修复。NET运行时,在其GitHub回购中报告它们
  • 你在看旧的。NET Framework源代码。自从NET 6EnsureCapacity是公共的,这里有它的最新版本

你能给我一个例子吗,这个条件if (newCapacity < min)将返回true?

In。NET 6及更高版本中,您可以很容易地想出这样一个例子:只需在新创建的列表上调用EnsureCapacity(100)

至于老人。当要插入的集合是ICollection<T>时,具有专用EnsureCapacity:InsertRange的NET Framework代码库调用EnsureCapacity(_size + count)。因此,为了满足您的条件,您只需要调用new List<int>().AddRange(new int[100])即可。

为什么要删除它?看起来这个方法集是这样的。容量达到某个数字,这个数字必须不小于分钟。这就是它的作用。如果newCapacity小于指定的最小值,则它是固定的。

相关内容

最新更新