gpt4 book ai didi

c# - IEnumerable.ToArray() 是如何工作的?

转载 作者:IT王子 更新时间:2023-10-29 04:42:15 26 4
gpt4 key购买 nike

它是二次通过算法吗?即,它迭代可枚举一次以计算元素的数量,以便它可以分配数组,然后再次传递以插入它们?

它是否循环一次,并不断调整数组的大小?

或者它是否使用像 List 这样的中间结构(可能在内部调整数组的大小)?

最佳答案

它使用中间结构。实际涉及的类型是 Buffer,它是框架中的内部结构。在实践中,这种类型有一个数组,每次它被复制以分配更多空间。这个数组以 4 的长度开始(在 .NET 4 中,它是一个可能会改变的实现细节),所以在执行 ToArray 时你可能最终会分配和复制很多。

不过,这里有一个优化。如果源实现 ICollection<T> ,它使用 Count 从一开始就分配正确的数组大小。

关于c# - IEnumerable<T>.ToArray() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com