foreachループ内に入れ子のwhileループがあり、特定の条件が満たされている間に列挙子を不定期的に進めたいと思っています。これを行うには、列挙子をIEnumerator < T>(これはforeachループ内にある必要があります)にキャストしてからキャストされたオブジェクトでMoveNext()を呼び出しますが、変換できないというエラーが表示されます。foreachループ内の列挙子を手動でインクリメントする
参照変換、ボクシング変換、ボックス化解除変換、折り返し変換、または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をインクリメントするための最良の方法は何ですか?
EDIT: 条件が満たされた後に実行したいwhileループの後にコードがあることを示すために編集しました。なぜなら、私は手作業でインクリメントしたいのですが、私はトップに戻る。これが不可能な場合は、私がどのようにしているかを再設計することが最善の策だと思います。
、一つのことは、あなたが不足している可能性があります: 'time'は、foreachループの進歩は、それが実装されていないことができればどのようIEnumerator' –
'実装されていない 'DateTime'、ありますIEnumeratorインターフェイス? – Despertar
コードを見てください。 'foreach(DateTime time in times)'です。 'times'は列挙されるオブジェクトです。 –