using IEnumerable over List in C#
本问题已经有最佳答案,请猛点这里访问。
使用IEnumerable over list有什么好处?例如,我有一个Employee类和一个Employee对象集合,如果我想迭代每个Employee,我可以使用:
1 2 3 4 5 |
或者我可以使用IEnumerable作为:
然后使用foreach循环。
它们都实现了相同的目标,所以为什么我们有时更喜欢使用IEnumerable而不是List?
List是一个更复杂的结构,它允许通过索引访问值,并支持方法insert、add、remove和其他方法。IEnumerable也是List类实现的一个非常基本的接口(尽管实现前几次可能很困难)。也就是说,当您不需要列表提供的附加项时,将使用IEnumerable。否则,由于列表与IEnumerable具有"is a"关系,因此您可以使用它,这是由于C提供的反向规则。以下是一些相关文档:
https://msdn.microsoft.com/en-us/library/dd799517.aspx
还有关于IEnumerable的实现:
https://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx
总之,如果您只需要使用一个简单的迭代器(如foreach循环)来循环生成的IEnumerable,或者使用Linq,那么IEnumerable类型就非常轻量。如果您需要比列表更多的功能,那么列表将建立在IEnumerable所需要的功能之上,因为它是一个IEnumerable,然后是一些。