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ć”!

questionAnswers(3)

yourAnswerToTheQuestion