«EnumerableToArray» (Решение)
Last updated
Was this helpful?
Last updated
Was this helpful?
LINQ-запросы являются ленивыми, т.е. реализуют отложенное исполнение. Это означает, что если сфомировать запрос и не вызвать для него явно метод вроде или , то выполнение запроса будет отложено до того момента, пока мы явно не затребуем результатов. Таким образом, строка
не выведет на консоль ничего. Далее, в цикле
произойдёт выполнение запроса. Причём, сначала выполнится первый yield
(вывод строки GetString: Foo
), а после него выполнится тело цикла для первого значения перечисления (вывод строки EnumerableToArray: Foo
). Далее, цикл foreach
запросит второй элемент перечисления, будет выполнен второй yield
(вывод строки GetString: Bar
) и второй раз будет выполнено тело цикла для полученного элемента (вывод строки EnumerableToArray: Bar
).
Далее следует строка
Тут можно наблюдать повторное исполнение LINQ-запроса, а значит мы вновь произойдёт вывод строк GetString: Foo
и GetString: Bar
.