Для объекта List
у нас есть метод Reverse().
Он отменяет порядок списка "на месте", он ничего не возвращает.
Для объекта IEnumerable
у нас есть метод расширения, называемый Reverse().
Он возвращает другой IEnumerable.
Мне нужно выполнить итерацию в обратном порядке через список, поэтому я не могу напрямую использовать второй метод, потому что я получаю список, и я не хочу его менять, просто повторяю назад.
Поэтому я могу либо сделать это:
for(int i = list.Count - 1; i >=0; i--)
или
foreach(var item in list.AsEnumerable().Reverse())
Я нашел его менее читаемым, чем если бы у меня был IEnumerable, просто сделайте
foreach(var item in list.Reverse())
Я не могу понять, почему эти 2 метода были реализованы таким образом, с тем же именем. Это довольно раздражает и запутывает.
Почему нет расширения под названием BackwardsIterator() вместо Reverse() для всех IEnumerable?
Меня очень интересует историческая причина этого выбора, больше, чем "как это сделать"!