Dlaczego istnieją dwie zupełnie różne wersje Reverse for List i IEnumerable?
DlaList
obiekt, mamy metodę o nazwieRewers().
Odwraca kolejność listy „na miejscu”, nic nie zwraca.
DlaIEnumerable
obiekt, mamy metodę rozszerzenia o nazwieRewers().
Zwraca kolejny IEnumerable.
Muszę iterować w odwrotnej kolejności przez całą listę, więc nie mogę bezpośrednio użyć drugiej metody, ponieważ otrzymuję Listę i nie chcę jej odwracać, tylko iterować wstecz.
Więc mogę to zrobić:
for(int i = list.Count - 1; i >=0; i--)
Lub
foreach(var item in list.AsEnumerable().Reverse())
Uznałem to za mniej czytelne, niż gdybym miał IEnumerable, po prostu zrób
foreach(var item in list.Reverse())
Nie rozumiem, dlaczego te dwie metody zostały zaimplementowane w ten sposób, o tej samej nazwie. Jest to dość denerwujące i mylące.
Dlaczego nie ma rozszerzenia BackwardsIterator () w miejsce Reverse () działającego dla wszystkich IEnumerable?
Bardzo interesuje mnie historyczny powód tego wyboru, coś więcej niż „jak to zrobić”!