2017-01-21 61 views
0

使用IEnumerable over List有什麼好處?比如我有一個Employee類和員工對象的集合,如果我想遍歷每個員工,我可以使用:使用IEnumerable over C#列表#

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

列表是一個更復雜的結構,它允許通過索引訪問值並支持方法的插入,添加,刪除和其他方法。 IEnumerable是List類實現的一個非常基本的接口(儘管實施前幾次可能會非常棘手)。也就是說,當你不需要列表提供的額外功能時,就使用IEnumerable。否則,因爲List與IEnumerable之間存在「是」關係,所以可以使用它,這是由於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,然後是一些。