List和IEnumerable之间的实际区别

时间:2013-07-03 13:04:24

标签: c# .net list ienumerable

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

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

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

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

希望有人可以为我解决这个问题,或者指出我正确的方向。 提前谢谢!

2 个答案:

答案 0 :(得分:155)

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

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

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

IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};

然后,您可以使用LINQ过滤或排序您想要的列表。

答案 1 :(得分:12)

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