2013-01-11 43 views
1

可能重複:
When to use IList and when to use List使用列表<T>與IList的<T>

這個問題可能只是缺乏對.NET框架的理解,但什麼是實際的利益在界面中有一組數據,而不僅僅是將它放在列表中?到目前爲止,我只使用了List<T>,它似乎完成了我所需要的工作,但是看看其他人的代碼,我發現有人使用IEnumerable<T>,IQueryable/IQueryable<T>,ICollection<T>,甚至IList<T>。話雖如此,List<T>IList<T>之間甚至有什麼區別?

我知道他們中的一些人在包含的對象上有不同的功能,但哪一個最安全呢? IEnumerable

+1

僅使用您需要的內容是一種很好的做法。所以如果一個方法只使用'IList'的方法和屬性,爲什麼它應該強制一個'List'作爲參數呢?請注意'Array'也實現了'IList'。 –

回答

3

如果將類型設置爲接口類型,則可以使用任何實現了IList<T>類型。

如果您使用List<T>,則只能使用從其繼承的類型和類型。

這取決於使用情況 - 如果您只需要迭代,請使用IEnumerable<T>,如果您還需要添加/刪除項目,請使用ICollection<T>。如果您需要將索引編入集合中,請使用IList<T>等...