列表大小是动态的

本文关键字:动态 列表 | 更新日期: 2023-09-27 18:21:22

我很好奇列表是如何动态的,以及它在幕后是如何工作的,我发现在谷歌快速搜索中很难找到任何东西,所以我认为这是一个好问题。我认为列表类将数据存储在一个数组中,但它是否像在幕后重新创建数组一样简单,这样列表用户就不必担心了?如果是,它多久做一次,什么时候做?

列表大小是动态的

List<T>只是数组的包装器。它会跟踪已添加的项目数量及其容量。如果您试图添加超出其容量的新项目,它会分配一个新阵列(大小是原始阵列的两倍),将所有内容复制到其中,然后将新项目添加到阵列中。

要获得有关特定.Net类如何工作的信息,获取.Net源代码并查看该类是如何实现的非常简单。你可以直接从微软下载,就像Eric指出的那样,或者使用反编译器,我发现它更容易/更快地进行快速浏览(我个人使用dotPeek)。还要注意,MS只发布了.Net 2.0版本,因此查看.Net 3.5+代码需要反编译器。