特定の条件が満たされている間、列挙子を無期限に進めたい foreach ループ内にネストされた while ループがあります。これを行うには、列挙子を IEnumerator< T > (foreach ループ内にある場合はそうでなければなりません) にキャストしてから、キャストされたオブジェクトで MoveNext() を呼び出しますが、変換できないというエラーが表示されます。
参照変換、ボックス化変換、ボックス化解除変換、ラッピング変換、または null 型変換を介して、型 'System.DateTime' を System.Collections.Generic.IEnumerator に変換することはできません。
foreach (DateTime time in times)
{
while (condition)
{
// perform action
// move to next item
(time as IEnumerator<DateTime>).MoveNext(); // will not let me do this
}
// code to execute after while condition is met
}
foreach ループ内で IEnumerator を手動でインクリメントする最良の方法は何ですか?
編集: while ループの後に、条件が満たされたときに実行したいコードがあることを示すように編集されました。そのため、while 内を手動でインクリメントし、それから抜け出し、続行するのではなく、トップに戻ります。 . これが不可能な場合は、自分のやり方を再設計するのが最善だと思います。