我正在尝试确定何时使用 List<T>.Add()
更有效与使用 Array.Resize()
相比方法。
Array.Resize 的文档说它复制了整个数组,并将其放入一个新对象中。旧对象将不得不被丢弃。这个旧对象在哪里?在栈上还是堆上?
我不知道 List.Add() 是如何工作的。
有谁知道 List.Add 方法与静态 Array.Resize 方法相比如何?
我对内存使用(和清理)以及 300 种值类型和 20,000 种值类型哪个更好。
就其值(value)而言,我计划在 .NET 的一种嵌入式版本上运行此代码。可能是 .NET Gadgeteer
最佳答案
你应该使用 List<T>
.
使用 Array.Resize
将强制您在每次添加项目时分别扩展数组,从而使您的代码大大变慢。 (因为数组不能有多余的容量)
A List<T>
由一个数组支持,但保留了将项目放入其中的备用容量。
添加项目所需要做的就是在数组中设置一个元素并增加其内部 size
计数器。
当数组变满时,列表的容量将增加一倍,从而可以轻松地再次添加 future 的项目。
关于c# - : List<T>. Add() 或 System.Array.Resize() 哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720398/