【发布时间】:2017-05-08 01:10:26
【问题描述】:
我很难理解 IEnumerable 的好处。我了解 Enumerables 允许将执行推迟到以后。
请在此处查看示例:https://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx。在此示例中,该数组已填充到主类中,然后注入到 IEnumerable 类中。因此,这似乎消除了将执行推迟到以后的优势。我在这里错过了什么?
【问题讨论】:
-
优点是 every 接口尽可能为调用者提供最少的信息。因此,与其对成员说“我需要一个数组才能正常工作”,您还可以说:“我需要某种可以枚举的集合”。所以不管它实际上是一个数组、一个列表还是 en(无尽)流。
-
IEnumerable<T>主要是关于能够遍历T的零个或多个实例 - 允许延迟执行的枚举没有任何隐含意义。然而,碰巧的是,LINQ 提供了一组操作符,这些操作符确实允许对枚举进行延迟执行。这是两个不同的东西。
标签: c# ienumerable ienumerator