我应该使用IEnumerable或IList?

任何人都可以告诉我何时应该使用它们。

例如,我想当我想访问集合的.Count或单个项目时,我应该使用IList,对吗?

谢谢。

一般来说,您应该尝试使用适合您目的的最不具体的类型。 IEnumerable不像IListIList实现IEnumerable )那么具体,所以除非你想要IList特有的东西(比如你建议的Count ,或者可能是AddDelete等),我会使用IEnumerable

保留IEnumerable一个好处是你可以编写迭代器方法来返回这个类型(查看“yield return”和迭代器方法,如果你不熟悉它们)。 这允许您为循环编写非常节省内存的“管道”。

当您想要遍历集合中的项目时,可以使用IEnumerable。

IList是您想要无序添加,删除和访问列表内容的时候。

IList vs IEnumerable实体集合

http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=722

当你需要通过索引访问集合,添加和删除元素等时,你应该使用IList ,当你需要枚举你的集合时,你应该使用IEnumerable

一个非常简单的答案,如果您将描述您的情景,我可以扩展它。