(新的C#) 有人能解釋一下,爲什麼叫迭代器(學期我MS C#編程手冊中找到)應返回IEnumerable
爲什麼要爲指定的迭代器返回IEnumerable?
// Implementing the enumerable pattern
public System.Collections.IEnumerable SampleIterator(int start, int end)
{
for (int i = start; i <= end; i++)
{
yield return i;
}
}
這是有道理的,當類實現IEnumerable
或IEnumerable<T>
接口GetEnumerator()
,但我不知道爲什麼以及它如何工作的方法和屬性。
編輯:有人指出我的問題沒有得到很好的構成(或許,我還是用C來思考++) 澄清:爲了使用foreach
環路上的一些類的對象,類需要實現IEnumerable
和IEnumerator
接口或yield return
(即編譯器負責處理所有內容)。 例子:
class ListClass : System.Collections.IEnumerable
{
public System.Collections.IEnumerator GetEnumerator() {...//uses yield return }
....
}
....
ListClass listClass1 = new ListClass(); // class implements IEnumerable interface method
foreach (int i in listClass1) {...}
在上面的例子中,GetEnumerator()
開始實施,其中,據我的理解,必須執行,如果你想你的對象在foreach
循環運行。 但是,當實現指定的迭代器時(上面的代碼),GetEnumerator()
不是必需的,只有IEnumberable<T>
(或非泛型)必須由方法/屬性返回。
希望這可以澄清我的問題。
這真不明白你的意思。該方法正在返回一個可迭代/可枚舉對象的引用......你能更清楚地解釋你的困惑嗎? (我意識到這可能很難。) –
你有什麼選擇? –