枚举的好处

w00*_*977 2 c# ienumerable ienumerator

我正在努力理解 IEnumerable 的好处。我知道 Enumerables 允许延迟执行。

请参阅此处的示例:https : //msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx。在此示例中,该数组已填充到主类中,然后注入到 IEnumerable 类中。因此,这似乎消除了推迟执行的优势。我在这里缺少什么?

Sef*_*efe 5

的主要目的IEnumerable不是要延迟执行,直到后来。an 的目的IEnumerable是提供一种方法来迭代对象的各个部分。这些部分可以是列表的项目,但它们也可以是(例如) a 的字符string。该IEnumerable存在的接口,因为不是每一个类,允许重复在其部件是一个集合或列表(如string),并IEnumerable提供了一个最小的接口来实现这个而不必实现一个完全成熟ICollectionIList

一个主要的和最重要的消费IEnumerableforeach语句,它是有初起.NET。后来才出现了 LINQ,Enumerable该类也构建在IEnumerable(或更准确地说是在IEnumerable<T>)接口上。

说到 LINQ,你在问题中提到的延迟执行确实是 LINQ 的一个关键特性。这意味着在执行 的迭代之前不会执行您定义的查询IEnumerable。这允许您在执行查询之前进一步优化查询。

这种延迟执行只涉及如何 IEnumerable 使用,而不涉及它的作用。延迟执行意味着您不会IEnumerable在定义它时开始迭代,而是在程序中的不同点开始迭代,例如 a foreach、 aToList等。

  • 我不确定 `string` 是一个很好的反例。`string` 只不过是一个 `char` 数组。否则,您就可以完成其余的工作。 (2认同)