免责声明:我明白之间的差别IEnumerable<T>,并 IEnumerator<T>和如何使用这两种.这与此或此不重复.
这更像是一个设计问题 - 因为IEnumerator<T>已经封装了可以枚举的所有必要信息(.Current,.MoveNext()),那么引入一个type(IEnumerable<T>)的目的是什么呢?它的唯一目的是返回前者的实例?
再具体一点:
为什么不能foreach设计为直接迭代IEnumerator<T>,如下所示:
// foreach (var e in anEnumerator) { //... }
while (anEnumerator.MoveNext())
{
doSomething(anEnumerator.Current);
}
Run Code Online (Sandbox Code Playgroud)为什么不能直接建立Linq IEnumerator<T>?
Ree*_*sey 57
这两个接口各自代表非常不同的概念. IEnumerable<T>是"允许枚举"的东西,其中IEnumerator<T>是枚举本身的表示.
如果要将这些合并在一起,则不可能同时枚举单个集合(没有其他一些机制).例如,执行foreach数组的两个线程将不再起作用,这在当前设计中是完全可接受的.
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |