IEnumerable <T> vs IReadOnlyList <T>

Ram*_*esh 9 .net ienumerable

选择IEnumerable<T>vs IReadOnlyList<T>作为返回参数类型或输入参数类型有什么区别?

IEnumerable<T>提供.Count.ElementAt暴露的内容IReadOnlyList<T>

Chr*_*res 14

IEnumerable<T>表示某些数据上的仅向前光标.您可以从集合的开头到结尾,一次查看一个项目.

IReadOnlyList<T> 表示可读的随机访问集合.

IEnumerable<T>更通用的是,它可以表示动态生成的项目,通过网络传入的数据,来自数据库的行等IReadOnlyList<T>,另一方面基本上只代表内存中的集合.

如果您只需按顺序查看每个项目,那么这IEnumerable<T>是一个更好的选择 - 它更通用.

我建议实际查看C++标准模板库 - 他们对各种类型的迭代器的讨论实际上很好地映射到你的问题.

  • 我将“动态生成”解释为通过“拉”机制延迟解析。 (2认同)