当一个List调整大小,因为没有多余的容量,多少容量被添加?只有1?还是增加容量(使总容量加倍)?当列表<T>调整大小时,添加了多少额外容量?
3
A
回答
8
容量将增加一倍。
这是通过下面的源控制:
// Ensures that the capacity of this list is at least the given minimum
// value. If the currect capacity of the list is less than min, the
// capacity is increased to twice the current capacity or to min,
// whichever is larger.
private void EnsureCapacity(int min) {
if (_items.Length < min) {
int newCapacity = _items.Length == 0? _defaultCapacity : _items.Length * 2;
if (newCapacity < min) newCapacity = min;
Capacity = newCapacity;
}
}
_defaultCapacity
是const int
等于4
。
+1
Argghh,我不得不验证:( – leppie 2010-11-11 17:24:54
0
通常双倍。
2
看起来它加倍,基于以下的代码:
int initialCapacity = 100;
List<string> list = new List<string>(initialCapacity);
Console.WriteLine(list.Capacity);
for(int i = 0; i < list.Capacity; i++){
list.Add("string " + i);
}
list.Add("another string");
Console.WriteLine(list.Capacity); // shows 200, changes based on initialCapacity
4
这是EnsureCpacity方法作为反射器看到它。大小将翻倍:)
private void EnsureCapacity(int min)
{
if (this._items.Length < min)
{
int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2);
if (num < min)
{
num = min;
}
this.Capacity = num;
}
}
相关问题
- 1. c#图片大小调整添加额外的像素
- 2. 当页面大小调整时<select>的内容消失
- 3. 当NSWindow调整大小时调整表格列
- 4. UITextView的内容在调整大小后被额外的空间弄错了
- 5. 调整表列宽内容大小
- 6. IE在动态添加行时调整表列的大小
- 7. 当内容缩放时,XAML网格列的大小调整
- 8. 需要多少时间才能调整表格大小?
- 9. 父容器调整大小时调整视频的大小
- 10. 当容器大小发生变化时,JTable仅调整所选列的大小
- 11. 当窗口高度调整大小时调整图像大小
- 12. 当Grid调整大小时增加列宽
- 13. 当窗口变小时ListBox内容不会调整大小
- 14. 如何在调整列大小时调整dxDataGrid的大小
- 15. jqplot在调整浏览器大小时调整大小图表
- 16. 调整窗体大小时自动调整列表框的大小
- 17. 调整JFrame的大小添加大量内存
- 18. Flex:无法调整外部加载的SWF内容的大小
- 19. 调整内容大小调整饼图
- 20. Iframe调整大小调整内容
- 21. 添加额外的列连接表
- 22. 当添加小部件时,tk笔记本框架未正确调整大小
- 23. 当我调整大小时,OpenGL绘图搞砸了CAEAGLLayer
- 24. Jquery可调整大小显示大小,同时调整大小
- 25. JavaScript添加调整大小功能
- 26. 当调整窗口大小时移动
- 27. 添加额外的列lookupedit
- 28. sed添加额外的列
- 29. 列表查看拆分容器的列宽调整大小
- 30. 调整大阵列大小
感谢大家的回应如此之快!我应该考虑使用反射器。我希望我能接受多个答案。 – SFun28 2010-11-11 17:28:06