c# - : List<T>. Add() 或 System.Array.Resize() 哪个更有效?

标签 c# .net arrays generics .net-micro-framework

我正在尝试确定何时使用 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/

相关文章:

c# - 从 C# 使用 LibTiff(访问平铺的 TIFF 图像)

.net - 阻止 Visual Studio 自动创建 "Mixed Platforms"解决方案配置

javascript - ES6 - 从现有数据创建新对象,仅使用一个属性,并删除任何重复项?

c# - 如何在不打开文件 (C#.NET/AutoCAD) 的情况下获取 .DWG 文件中特定图层上的所有实体?

c# - 在 C#/GDI+ 中从 Format8bppIndexed 转换为 Format24bppRgb

.net - 用于音频演示的GUI控件

c - 尝试终止一个字符数组并在之后打印

c - 数组元素(使用复合赋值运算符后)会产生垃圾值,为什么?

c# - 数组元数据问题(缓存行)

c# - ASP.Net SQL 查询输入控件