考虑两个迭代方法具有相同的机构:返回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