选择IEnumerable<T>
与IReadOnlyList<T>
作为返回参数类型或输入参数类型有什么区别?
IEnumerable<T>
提供.Count
和.ElementAt
,IReadOnlyList<T>
答案 0 :(得分:14)
IEnumerable<T>
表示某些数据的仅向前游标。您可以从集合的开头到结尾,一次查看一个项目。
IReadOnlyList<T>
表示可读的随机访问集合。
IEnumerable<T>
更为通用,因为它可以表示动态生成的项目,通过网络传入的数据,来自数据库的行等等。另一方面,IReadOnlyList<T>
基本上只代表-memory collections。
如果您只需按顺序查看每个项目,那么IEnumerable<T>
是最佳选择 - 它更为通用。
我建议实际查看C ++标准模板库 - 他们对各种类型的迭代器的讨论实际上很好地映射到你的问题。