Почему есть две совершенно разные версии 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?
Меня очень интересует историческая причина этого выбора, а не то, как это сделать. материал!