什么更有效:List <T> .Add()或System.Array.Resize()?

goo*_*ate 10 .net c# arrays generics .net-micro-framework

我试图确定何时List<T>.Add()比使用该Array.Resize()方法更有效.

Array.Resize的文档说它会复制整个数组,并将其放入一个新对象中.必须丢弃旧对象.这个旧对象在哪里?在堆栈或堆上?

我不知道List.Add()是如何工作的.

有谁知道List.Add方法如何与静态Array.Resize方法进行比较?

我对内存使用(和清理)感兴趣,对于300种值类型更好,而不是20,000种值类型.

为了它的价值,我计划在嵌入式.NET之一上运行这些代码.可能是.NET Gadgeteer

SLa*_*aks 20

你应该用一个List<T>.

使用Array.Resize将强制您在每次添加项目时单独展开数组,从而使代码慢.(因为阵列不能有备用容量)

A List<T>由数组支持,但保留备用容量以放入项目.
添加项目所需要做的就是在数组中设置一个元素并增加其内部size计数器.
当阵列变满时,列表将使其容量加倍,从而可以毫不费力地再添加未来的项目.

  • 如果您确切知道需要多少项,可以在构造函数中设置`List`的容量.这样,您将不需要任何调整大小.它的性能将完全等同于阵列. (3认同)