通过阅读类似帖子,我了解到List是一种IEnumerable。但我真的很想知道这两者之间的实际区别是什么。
总是使用过List并且从未使用IEnumerable的人:
这是实际示例: 我们想要存储四个字符串,按字母顺序排序,将它们传递给另一个函数,然后向用户显示结果。我们会用什么?为什么?
希望有人可以为我解决这个问题,或者指出我正确的方向。 提前谢谢!
答案 0 :(得分:155)
IEnumerable和List之间的一个重要区别(除了一个是接口而另一个是具体类)是IEnumerable是只读的而List不是。
因此,如果您需要能够对收藏品进行任何类型的永久性更改(添加和删除),则需要列表。如果您只需要阅读,排序和/或过滤您的集合,IEnumerable就足够了。
所以在你的实际例子中,如果你想一次添加四个字符串,你需要List。但是,如果您一次性实例化您的集合,则可以使用IEnumerable。
IEnumerable firstFourLettersOfAlphabet = new[]{"a","b","c","d"};
然后,您可以使用LINQ过滤或排序您想要的列表。
答案 1 :(得分:12)
List以外的许多类型都实现了IEnumerable,例如ArrayList。所以一个优点是你可以将不同的集合类型传递给同一个函数。