我想這非常簡單,只需要使用迭代器和.MoveNext()方法。有條件地在每次迭代中使用不同數量的項目
但是,假設您正在迭代一個集合,您在集合上做了一些工作,但是基於每個「循環」中的某些條件,您可能必須抓取2個或更多項目,並且基本上跳過它們,然後通過它們循環。
例子:
foreach (Fish fish in ParcelOfFish)
{
GiverPersonFish(fish);
}
在這裏,我只是通過魚的集合迭代並將它們傳遞給方法。有些魚很小,所以我必須給這個人另一個,所以它不會餓死。
foreach (Fish fish in ParcelOfFish)
{
GiverPersonFish(fish);
if (fish.IsSmall)
{
GiverPersonFish(ParcelOfFish.MoveNext()); // here I want to give him the next fish
}
}
這將如何工作,使第二魚,我給在下一循環不會重複?
此外,爲了使這更棘手,一個人可能會得到一條大魚和一條小魚是不公平的,所以每當有一條小魚時,我都不想從迭代中抓另一條小魚,然後繼續前進。
因此,如果後第一個「循環」的順序是
Small
Big
Big
Small
Big
Small
,他將得到兩個小(索引0和3),它會通過其他像這樣的循環:
Big
Big
Big
Small
的編譯器似乎並不喜歡迭代在迭代時如此修改。
由於是可解的,看來你把所有的魚給同一個人,那麼什麼是處理了先進的多每次迭代都比一條魚要多? –
foreach不適合這裏。也許使用隊列更好。 –
@ Y.Ecarri那麼我們真的不知道GivePersonFish()方法會發生什麼,它並不重要。 –