【发布时间】:2011-01-15 23:30:31
【问题描述】:
我必须在这里遗漏一些简单的东西。
取以下代码:
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循环是最有效的方法。 -
@Zakalwe,我想一次迭代两个可枚举。 foreach 正在通过第一个,如果满足条件,我需要下一个 int(只是一个例子,不是真正的 int)。
-
这是一个非常好的问题。在 python 中它非常简单,我正在研究如何用 C# 来做,GetEnumerator 就是答案
标签: c# ienumerable yield-return