我一定是错过了什么简单的东西。
请看以下代码:
public IEnumerable<int> getInt(){
for(int i = 0; i < 10; i++){
yield return i;
}
}
我可以这样调用它:foreach (int j in obj.getInt()){
//do something with j
}
如何在不使用 foreach 循环的情况下使用 getInt 方法:
IEnumerable<int> iter = obj.getInt();
// do something with iter ??
谢谢。
编辑
对于那些想知道我为什么想要这个的人,我正在迭代两件事:
IEnumerator<int> iter = obj.getInt().GetEnumerator();
foreach(object x in xs){
if (x.someCondition) continue;
iter.MoveNext();
int n = iter.current();
x.someProp = n;
etc...
}
IEnumerable<T>
的整个意义在于允许迭代,而foreach
循环是最有效的方法。 - Will Vousden