Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置“IList”能力的重要性是什么?_C#_.net_List - Fatal编程技术网

C# 设置“IList”能力的重要性是什么?

C# 设置“IList”能力的重要性是什么?,c#,.net,list,C#,.net,List,在创建时设置列表容量的重要性是什么 例如,假设我确定我的列表在其整个生命周期中只包含n个项目。在列表中,有一个静态大小的集合,用于保存您的项目。一旦您达到该集合的容量,则列表将重新调整其大小,这将对性能产生影响(可能对您有意义,也可能对您没有意义) 通过设置初始容量,您可以避免执行那些重新调整大小的操作。每当列表需要超过其当前容量时,必须重新分配内存和移动内容,这需要时间和精力 如果您提前知道列表的确切大小,您可以避免这种情况。您可以加快一点速度,因为列表不必增加。列表的增长是O(n),其中n是

在创建时设置列表容量的重要性是什么

例如,假设我确定我的列表在其整个生命周期中只包含n个项目。

列表中,有一个静态大小的集合,用于保存您的项目。一旦您达到该集合的容量,则
列表将重新调整其大小,这将对性能产生影响(可能对您有意义,也可能对您没有意义)


通过设置初始容量,您可以避免执行那些重新调整大小的操作。

每当列表需要超过其当前容量时,必须重新分配内存和移动内容,这需要时间和精力


如果您提前知道列表的确切大小,您可以避免这种情况。

您可以加快一点速度,因为列表不必增加。列表的增长是O(n),其中n是元素的当前数量,标准的
列表通过将其当前大小加倍来增长。综上所述,将一个元素添加到列表的末尾仍然是一个平均O(1)操作(这是因为在最后插入n个元素时,在旧缓冲区和新缓冲区之间平均会有n个插入(每一个都是O(1)操作)和n个复制操作(每一个都是O(1)操作),因此每次添加都会超过O(1))

这将略微提高性能,因为创建列表时会分配必要的内存,而且添加更多元素时,CLR不必增加列表大小

请注意,即使指定了列表大小,如果添加的元素比预期的多,列表大小也会增加