在内存方面,T []和List <T>的内部差异是什么?

vto*_*ola 5 .net arrays heap list

我正在阅读一篇关于数组vs列表的文章,作者说数组比列表更差,因为(除其他外)数组是变量列表,但对我来说列表也是变量列表.我的意思是,我仍然可以list[3] = new Item().

实际上,我总是以某种方式看到一个List<T>像数组的包装器,它允许我轻松地使用它而不用关心处理它的结构.

在堆/堆内存使用方面,a T[]和a 之间的内部差异是List<T>什么?

Tol*_*men 2

由于数组是静态结构,因此在初始化后,它会分配您所需的内存。

int arr[5];
Run Code Online (Sandbox Code Playgroud)

例如,这里有 5 个int对象在内存中创建。但是,当您使用列表时,根据其实现,它首先为您提供一个具有预定义容量的数组。当您添加元素时,如果超出容量,则会按比例扩大。在某些实现中,它只是将其大小加倍,或者在某些实现中,当授予的容量已满时,它会自行扩大。