これは本当に単純で、イテレータと.MoveNext()メソッドを使用するだけだと思います。
ただし、コレクションを反復処理しているとしましょう。コレクションでいくつかの作業を行いますが、各「ループ」の条件に基づいて、2つ以上のアイテムを取得し、基本的にそれらをスキップして、次にループしないようにする必要があります。 。
例:
foreach (Fish fish in ParcelOfFish)
{
GiverPersonFish(fish);
}
ここでは、Fishのコレクションを繰り返し処理し、それらをメソッドに渡します。小さい魚もいるので、飢えないように別の魚をあげなければなりません。
foreach (Fish fish in ParcelOfFish)
{
GiverPersonFish(fish);
if (fish.IsSmall)
{
GiverPersonFish(ParcelOfFish.MoveNext()); // here I want to give him the next fish
}
}
私が与える2番目の魚が次のループで繰り返されないように、これはどのように機能しますか?
また、これをトリッキーにするために、人が大小の魚を手に入れるのは不公平なので、小魚がいるときはいつでも、反復から別の小魚をつかんで続行したくありません。
したがって、注文が
Small
Big
Big
Small
Big
Small
最初の「ループ」の後、彼は2つの小さな値(インデックス0と3)を取得し、残りの部分を次のように繰り返します。
Big
Big
Big
Small
コンパイラは、反復中にそのように反復が変更されると、気に入らないようです。