次の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
ブロックの最初の反復で、結果の最初の結果が2番目の結果ではなく返されることに気付くでしょう。
したがって、基本的にこれが私の問題です。イテレータメソッドから最初の値を取得してから、このメソッドを再起動せずに別の場所で使用することはできません。
誰かがこれの回避策を知っていますか?