Здравствуйте, Serginio1, Вы писали:
I>>И что? Сколько стоит использование IEnumerable ?
S> То же что и yield, а именно MoveNext и Current
Именно.
S> Я подправил потому, что изначальный смыл в том, что вычисления идут с права налево и нет лишних циклов если бы вычисляли слева направо c созданием новых коллекций
Ты путаешь linq и ленивую обработку коллекций. Linq это про соответствующие расширения, которые можно навесить на любой интерфейс, а не только IEnumerable. Более того — совсем необязательно это будет коллекция.
RX, XML, WMI, IQueryable и тд и тд и тд.
Т.е. yield это частный случай для IEnumerable. То есть, частный случай частного случая
S> Где ты нашел про то, что yield ничего не стоит?
Ты так пишешь.
I>>Не к энумератору, а к значению. Вместо x[i] у тебя будет обращение к moveNext, switch присваивание Current, чтение Current.
S> Ну я тебе подам на вход IEnumerable не основанном на List или array, как ты с ним будешь работать.
S>Это же Linq!!!
Не подашь. У меня параметры это массивы в явном виде шоб люди навроде тебя не подпихивали хрень и не заявляли "Ваша обработка коллекций тормозит после того, как я сто фильтров объединил"
S> главное, что yield обеспечивает вычисление справа на лево!!!
yield это просто последовательность, а не "слева направо". А вот как будут реальные элементы данных выбираться — как угодно.
S>то тебе не нужно перебирать всю коллекцию (возможно и не один раз) и вызвать все лямбды, new в цепочке расширений если вычисления идут слева направо.
Это тот самый частный случай.