在C#中使用IEnumerable over List

时间:2017-01-21 23:28:41

标签: c# list ienumerable

在List上使用IEnumerable有什么好处?例如,我有一个Employee类和一组雇员对象,如果我想迭代每个雇员,我可以使用:

List<Employee> employees = new List<Employee>() { new Employee(...),...}
foreach (Employee emp in employees)
{
   Console.WriteLine(emp.Name);
}

或者我可以使用Ienumerable:

IEnumerable<Employee> employees = new List<Employee>() { new Employee(...),...}

然后使用foreach循环。

他们两个都达到了相同的目标,为什么我们有时更喜欢使用IEnumerable而不是List?

1 个答案:

答案 0 :(得分:1)

List是一个更复杂的结构,它允许通过索引访问值,并支持插入,添加,删除和其他方法的方法。 IEnumerable是List类实现的一个非常基本的接口(尽管前几次实现起来可能很棘手)。也就是说,当您不需要List提供的额外内容时,将使用IEnumerable。否则,因为List有一个&#34;是&#34;由于c#提供的逆变规则,与IEnumerable的关系可以使用它。以下是一些文档:

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,然后是一些。