考慮兩個迭代方法具有相同的機構:返回IEnumerable <T>和IEnumerator <T>的迭代器方法有什麼區別嗎?
public static IEnumerable<int> It1() {
...
}
public static IEnumerator<int> It2() {
...
}
是否有任何情況,其中調用It2
是調用It1.GetEnumerator()
不同?
是否有充分的理由將迭代器定義爲IEnumerator<T>
而不是IEnumerable<T>
?我唯一能想到的是當你實施IEnumerable<T>.GetEnumerator()
。
編輯:通過迭代器方法我的意思是使用yield return
和yield break
結構的方法。
的方法嚴格地說實現不能相同。 – 2009-01-06 14:50:15
當然可以。 public static IEnumerable It1(){ yield return 1; } public static IEnumerator It2(){ yield return 1; } –
2009-01-06 21:07:49