【发布时间】:2011-01-18 04:07:20
【问题描述】:
我正在尝试确定何时使用 List<T>.Add() 与使用 Array.Resize() 方法更有效。
Array.Resize 的文档说它会复制整个数组,并将其放入一个新对象中。旧对象将不得不被丢弃。这个旧物体在哪里?在栈上还是堆上?
我不知道 List.Add() 是如何工作的。
有谁知道 List.Add 方法与静态 Array.Resize 方法的比较?
我对内存使用(和清理)感兴趣,以及 300 种值类型与 20,000 种值类型相比哪个更好。
对于它的价值,我计划在 .NET 的嵌入式风格之一上运行此代码。可能是.NET Gadgeteer
【问题讨论】:
-
没有任何装箱问题。不要重新发明轮子。
List<T>存在是有原因的;使用它! -
我有一种感觉 List
是超过 500 个对象的答案,但读完后我很好奇(搜索 500)msdn.microsoft.com/en-us/library/6sh2ey19.aspx -
System.Array 是否存在装箱问题?
-
您可能正在担心一些您不需要担心的事情。除非您有问题,否则使用 List
如果您非常清楚您的列表通常包含多少项目,您可以使用容量参数。如果您遇到性能问题 - 您可能可以在代码中做出比这更好的修复。 -
@makerofthings7 数组是“引用类型”——单元格是什么类型并不重要。它们具有仅通过访问运算符公开的基础支持。 “值类型”存在于堆栈中的概念在很大程度上是错误的,仅适用于某些情况(例如本地特定类型的变量和/或方法参数),并且是一种实现特性/细节。
标签: c# .net arrays generics .net-micro-framework