列表大小如何动态?

时间:2013-07-06 16:03:10

标签: c# list collections

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

1 个答案:

答案 0 :(得分:3)

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

要获取有关特定.Net类如何工作的信息,可以轻松获取.Net源代码并查看该类的实现方式。您可以直接从Microsoft下载它,如Eric所说,或者使用我发现更容易/更快的反编译器来快速查看(我个人使用dotPeek)。另请注意,MS只通过.Net 2.0发布,所以看到.Net 3.5+代码需要反编译器。