Czy istnieje jakiś rzadki konstrukt języka, którego nie spotkałem (jak kilka, których ostatnio się nauczyłem, niektóre na stosie przepełnienia) w języku C #, aby uzyskać wartość reprezentującą bieżącą iterację pętli foreach?
Na przykład obecnie robię coś takiego w zależności od okoliczności:
int i = 0;
foreach (Object o in collection)
{
// ...
i++;
}
foreach
jest zapewnienie wspólnego mechanizmu iteracji dla wszystkich kolekcji, niezależnie od tego, czy są one indeksowalne ( List
), czy nie ( Dictionary
).
Dictionary
nie można go indeksować, iteracja Dictionary
przechodzi przez niego w określonej kolejności (tzn. Moduł wyliczający jest indeksowany przez to, że dostarcza elementy kolejno). W tym sensie moglibyśmy powiedzieć, że nie szukamy indeksu w kolekcji, a raczej indeksu bieżącego wyliczonego elementu w wyliczeniu (tj. Czy znajdujemy się na pierwszym, piątym czy ostatnim wyliczonym elemencie).