.net arraylist如何在内部增加其大小?

.net arraylist如何在内部增加其大小?,.net,.net,有人能解释一下数组列表是如何工作的吗?我想问你到底是怎么回事 数组列表增加长度并添加新项。它在内部是如何工作的?我想解释一下数组列表是如何增加长度和添加新项的 在内部,ArrayList(显然)使用数组存储值。对于列表,情况恰好也是如此 如果查看ArrayList(和List)的私有方法EnsureCapacity(int),您将看到,当ArrayList不够大,无法容纳下一个项目时,会分配一个新的内部数组,其大小是前一个数组的两倍。执行此操作后,较小数组的内容将复制到新数组中 不过,这些都是实

有人能解释一下数组列表是如何工作的吗?我想问你到底是怎么回事
数组列表增加长度并添加新项。它在内部是如何工作的?我想解释一下数组列表是如何增加长度和添加新项的

在内部,
ArrayList
(显然)使用数组存储值。对于
列表
,情况恰好也是如此

如果查看
ArrayList
(和
List
)的私有方法
EnsureCapacity(int)
,您将看到,当
ArrayList
不够大,无法容纳下一个项目时,会分配一个新的内部数组,其大小是前一个数组的两倍。执行此操作后,较小数组的内容将复制到新数组中

不过,这些都是实现细节,您不能确保每个实现都以相同的方式完成(我猜)


无论如何,在这种情况下,您应该使用
List
。它的工作方式与ArrayList相同,但也具有类型安全性

ArrayList
只是.NET框架的一部分。它与ASP.NET无关。至于内部:只有一个私有变量维护对数组的引用。当数组需要更大以容纳新元素时,将创建一个新数组,将现有内容复制到其中,并重新分配变量以引用新数组而不是旧数组。请注意,在现代代码中,您更可能使用
List
而不是
ArrayList
。这很好,我们可以使用List而不是ArrayList,但正如我们所知,ArrayList长度不是固定的,我们可以添加任意数量的项。但当我们将项目添加到数组列表中时,它会在内存中的某些位置保存这些值。我想知道它是如何自动增加其长度的。在数组中,我们定义了它的长度,并且只有当我们试图添加的长度超过显示内存不足错误的长度时,才使用该长度。但在数组列表中,我们从未看到这样的错误。。为什么和如何?