嗨,大家好,
这可能是一个非常简单的问题,但由于我刚刚开始,希望你不介意回答。
使用列表与数组时,是否有最佳做法或经验法则?例如,我正在遵循的教程使用数组来保存一些数据,他总是说“哦,40个数组就足够了,因为我永远不会使用更多数据。
但是,我已经将他的数组换成了Lists。这样,列表的大小可以根据我的运行时需求进行调整,它还允许我使用IEnumerable迭代器,这样我就可以用于每个循环。
那么,使用List有没有缩小尺寸?我猜测它比使用数组更受性能影响,但它有意义吗?我应该更频繁地尝试使用数组,还是使用列表,如果我发现性能问题,只使用数组?
感谢您的投入!
答案 0 :(得分:5)
列表通常是要走的路,除非你说,你需要挤出更多的表现:
和
在向消费者公开列表时,请记住选择适当的界面(即公开IList
,ICollection
或IEnumerable
,而不是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)
阵列必须在随机访问中表现更好,并且在从集合中添加和删除项目时,列表的性能会更好。