Почему есть две совершенно разные версии Reverse для List и IEnumerable?

ДляList объект, у нас есть метод с именемЗадний ход().
Он изменяет порядок списка «вместо», ничего не возвращает.

ДляIEnumerable объект, у нас есть метод расширения под названиемЗадний ход().
Это возвращает другой IEnumerable.

Мне нужно выполнять итерацию в обратном порядке по списку, поэтому я не могу напрямую использовать второй метод, потому что я получаю список, и я не хочу обращать его, просто повторять в обратном порядке.

Так что я могу сделать это:

for(int i = list.Count - 1; i >=0; i--)

Или же

foreach(var item in list.AsEnumerable().Reverse())

Я нашел его менее читабельным, чем если бы у меня был IEnumerable, просто сделайте

foreach(var item in list.Reverse())

Я не могу понять, почему эти два метода были реализованы таким образом, с тем же именем. Это довольно раздражает и сбивает с толку.

Почему вместо Reverse () нет расширения BackwardsIterator (), работающего для всех IEnumerable?

Меня очень интересует историческая причина этого выбора, а не то, как это сделать. материал!

Ответы на вопрос(3)

Ваш ответ на вопрос