.net - 数组与列表<T> : When to use which?

标签 .net arrays list

MyClass[] array;
List<MyClass> list;

在什么情况下,其中一种优于另一种?为什么?

最佳答案

实际上,您很少需要使用数组。绝对使用List<T>任何时候您想要添加/删除数据,因为调整数组大小的成本很高。如果您知道数据是固定长度,并且您想出于某些非常具体的原因(在基准测试之后)进行微优化,那么数组可能会很有用。

List<T>提供了比数组多很多的功能(尽管 LINQ 稍微平衡了一点),并且几乎总是正确的选择。除了params当然,争论。 ;-p

作为计数器 - List<T>是一维的;你有矩形(等)数组,如 int[,]string[,,] - 但还有其他方法可以在对象模型中对此类数据进行建模(如果需要)。

另请参阅:

也就是说,我在 protobuf-net大量使用了数组。项目;完全为了性能:

  • 它进行了大量的位移,因此 byte[]对于编码来说非常重要;
  • 我使用本地滚动byte[]我在发送到底层流(和 v.v.)之前填充的缓冲区;比 BufferedStream 快等等;
  • 它在内部使用基于数组的对象模型( Foo[] 而不是 List<Foo> ),因为大小在构建后就固定了,并且需要非常快。

但这绝对是一个异常(exception);对于一般业务线处理,a List<T>每次都赢。

关于.net - 数组与列表<T> : When to use which?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434761/

相关文章:

c# - 向上类型转换-c#

.NET C# WinForms 贸易公司考试

.net - 如何正确修改生成的XSD以克服导致异常 "cs0030:Unable to generate a temporary class"的已知.Net错误

javascript - 迭代对象数组并将值相加

c# - 将 NetTCPBinding 与 TcpClientCredentialType.Windows 结合使用的 WCF 安全性

arrays - 函数如何在不分配动态内存的情况下返回动态字节数?

php - 在数组中的两对之间添加键/值对

java - 列表 数组 列表 转换

python - 在列表 python 中附加零但不是 False

android - 显示错误的 ArrayAdapter 无法解决构造函数适配器错误