Często znajduję się w obiekcie IEnumerable, którego potrzebuję, aby wykonać pętlę, wykonując obliczenia dla każdego elementu, który zależy od n bezpośrednio poprzedzającego i następujące obiekty.C# Pętla przez IEnumerable dla obliczeń, które używa n poprzednich i następnych elementów
Jednym z typowych przykładów jest obliczenie średnia krocząca, ale inne czasy obliczenie jest bardziej skomplikowane niż to i opiera się na kilku dziedzinach, z każdego z elementów listy
nigdy nie jestem pewien co do najlepszego sposobu uporządkowania moje pętle. Wydajność ma znaczenie, ale ważniejsza jest łatwość konserwacji i czytelność.
Czasami przekonwertować do listy, a następnie użyć pętli for, aby elementy [i-1], [i], [i + 1], a następnie wykonać moje obliczenia.
Innym razem zachowuję go jako IEnumerable, ale "buforuję" poprzednią parę elementów, więc nie wykonuję obliczeń dla i dopóki nie dotrę do [i + 1] w pętli foreach .
- Rozważałem również użycie połączonej listy, aby móc korzystać z metod .Poprzednia i .Next.
Jakieś sugestie, która technika byłaby najlepsza w użyciu?
nie zamierza być zdania, Right Now (zbyt wiele plusy i minusy dla krótka odpowiedź i nie mam czasu na długą odpowiedź), ale inną możliwością w niektórych przypadkach są dwa wskaźniki poruszane w tandemie. "i" zaczyna się od np. 0 i 'j' w 3, robisz rzeczy z' k' idąc od 'i' do' j' (półotwartym, więc trafiając 0, 1 i 2), przenosisz '++ i; ++ j; 'i ponownie zapętlaj' k', aż do '++ j> list.Count' (więc j wskazuje tuż poza listą na ostatnim przejściu). –