.net 当< T>我们可以使用foreach()[duplicate]遍历集合时,为什么要使用IEnumerable

xe55xuns  于 2023-02-14  发布在  .NET
关注(0)|答案(1)|浏览(131)
    • 此问题在此处已有答案**:

Can anyone explain IEnumerable and IEnumerator to me? [closed](16个答案)
9小时前关门了。
我想知道我们应该在哪里使用IEnumberable<T>
我知道IEnumerable<T>是如何工作的,返回IEnumerator<T>等等,但是IEnumerable<T>的最终目标是从集合中查询数据,不是吗?这就是我们已经可以使用foreach()循环做的事情?那么什么时候使用IEnumerable<T>IEnumerable<T>是查询集合的唯一选项的实际场景是什么?

y4ekin9u

y4ekin9u1#

但是IEnumerable<T>的最终目标是查询集合中的数据,不是吗?
不,IEnumerable<T>的目标是提供对一个 sequence 的访问,这个 * sequence * 可能是一个集合,也可能不是一个集合,其目的是 * 抽象 * 底层源代码,它 * 可能 * 是一个原始集合,但也可能是:

  • 某些LINQ(或类似)投影(collection.Where(...).Select(...)等)
  • 对ADO .NET、redis、socket、gRPC、文件或其他数据提供程序的开放查询,* 不 * 容易计数、可重复等-只是:“一个序列”
  • 进程中数据生成器
  • 一些生产者/消费者设置
  • 等等

如果你知道你总是在迭代一个集合,那么就确定:可随意使用混凝土类型,或ICollection<T>/IList<T>等;但是:不是每个序列都是集合。

相关问题