【发布时间】:2013-02-19 22:03:51
【问题描述】:
请考虑以下 C# 块:
int resultIndex = 0;
Result firstResult = results.First();
DoAVeryImportOperationWithFirstResult(firstResult);
Console.WriteLine(String.Format("This is the {0} result.", resultIndex++));
yield return firstResult;
foreach(Result result in results)
{
Console.WriteLine(String.Format("This is the {0} result.", resultIndex++));
yield return result;
}
如果您熟悉 Linq 和迭代器,您会注意到在 foreach 块的第一次迭代中,将返回 results 的第一个结果,而不是第二个。
所以,基本上这是我的问题:我无法从迭代器方法中获取第一个值,然后在不重新启动此方法的情况下在其他地方使用它。
有人知道一些解决方法吗?
【问题讨论】:
标签: c# linq iterator yield-return