List和IEnumerable之间的实际区别

Rob*_*bin 61 .net c# ienumerable list

通过阅读类似的帖子,我了解到List是一种IEnumerable.但我真的很想知道这两者之间的实际区别是什么.

对于总是使用List并且从未使用IEnumerable的人:

  • 两者之间有什么实际区别?
  • 在哪些情况下,其中一个比另一个更好?

这是一个实际的例子:我们想要存储四个字符串,按字母顺序排序,将它们传递给另一个函数,然后向用户显示结果.我们会用什么?为什么?

希望有人可以为我排序或指出我正确的方向.提前致谢!

Sco*_*nce 173

IEnumerable和List之间的一个重要区别(除了一个是接口而另一个是具体类)是IEnumerable是只读的而List不是.

因此,如果您需要能够对您的收藏(添加和删除)进行任何类型的永久性更改,您将需要列表.如果您只需要阅读,排序和/或过滤您的集合,IEnumerable就足够了.

所以在你的实际例子中,如果你想一次添加四个字符串,你需要List.但是,如果您同时实例化您的集合,则可以使用IEnumerable.

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用LINQ过滤或排序列表,无论您想要什么.

  • "IEnumerable是只读的而List不是." 最后一个具体的答案,实际上让你大致了解差异.非常感谢你 :) (39认同)
  • 您可以使用 IEnumerable 执行其他一些使用 List 无法完成的很酷的事情。查看 yield 关键字。https://www.kenneth-truyers.net/2016/05/12/yield-return-in-c/ (3认同)

Das*_*ave 13

List以外的许多类型都实现了IEnumerable,例如ArrayList.因此,一个优点是您可以将不同的集合类型传递给同一个函数.