Почему есть две совершенно разные версии 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())
Я могу'Я не понимаю, почему эти 2 метода были реализованы таким образом, с тем же именем. Это довольно раздражает и сбивает с толку.
Почему вместо Reverse () нет расширения BackwardsIterator (), работающего для всех IEnumerable?
Меня очень интересует историческая причина этого выбора, более чемкак это сделать' материал!