通用列表与阵列

时间:2010-07-22 08:02:59

标签: c#

  

可能重复:
  Array versus List<T>: When to use which?

嗨,大家好,

这可能是一个非常简单的问题,但由于我刚刚开始,希望你不介意回答。

使用列表与数组时,是否有最佳做法或经验法则?例如,我正在遵循的教程使用数组来保存一些数据,他总是说“哦,40个数组就足够了,因为我永远不会使用更多数据。

但是,我已经将他的数组换成了Lists。这样,列表的大小可以根据我的运行时需求进行调整,它还允许我使用IEnumerable迭代器,这样我就可以用于每个循环。

那么,使用List有没有缩小尺寸?我猜测它比使用数组更受性能影响,但它有意义吗?我应该更频繁地尝试使用数组,还是使用列表,如果我发现性能问题,只使用数组?

感谢您的投入!

6 个答案:

答案 0 :(得分:5)

列表通常是要走的路,除非你说,你需要挤出更多的表现:

在向消费者公开列表时,请记住选择适当的界面(即公开IListICollectionIEnumerable,而不是List<T>,具体取决于您希望的最低合约保证消费者),按照这里的讨论:IList vs IEnumerable for Collections on Entities

答案 1 :(得分:3)

我建议您查看此SO answer

答案 2 :(得分:1)

这实际上取决于您的使用场景。如果要创建固定长度的集合(不会更改),则可以使用数组。如果您想要一个可以有效增长和收缩的集合,请使用List。

您的代码应表达其意图,而不是提前担心此类微观优化。如果应用程序中存在性能问题,请对其进行概要分析并解决通过概要分析确定的问题。

请注意,在.net 3.5中,数组实现IEnumerable<T>,因此您可以foreach覆盖它们。

答案 3 :(得分:1)

1)  在你去的时候使用List     修改它(添加,删除)项目。

2)gereric List是类型安全的,所以你不能错误地插入其他类型

因为您可以轻松地将List传送到数组或从数组中创建List。

答案 4 :(得分:0)

当我们使用某些算法(搜索排序等)时,数组更有用,如果我们只存储数据,那么对所有项目进行一些操作最好使用list。

答案 5 :(得分:0)

阵列必须在随机访问中表现更好,并且在从集合中添加和删除项目时,列表的性能会更好。