«EnumerableToArray» (Решение)
GetString: Foo
EnumerableToArray: Foo
GetString: Bar
EnumerableToArray: Bar
GetString: Foo
GetString: Bar
var strings = GetStringEnumerable();
не выведет на консоль ничего. Далее, в цикле
foreach (var s in strings)
Console.WriteLine("EnumerableToArray: " + s);
произойдёт выполнение запроса. Причём, сначала выполнится первый
yield
(вывод строки GetString: Foo
), а после него выполнится тело цикла для первого значения перечисления (вывод строки EnumerableToArray: Foo
). Далее, цикл foreach
запросит второй элемент перечисления, будет выпол нен второй yield
(вывод строки GetString: Bar
) и второй раз будет выполнено тело цикла для полученного элемента (вывод строки EnumerableToArray: Bar
).Далее следует строка
return strings.ToArray();
Тут можно наблюдать повторное исполнение LINQ-запроса, а значит мы вновь произойдёт вывод строк
GetString: Foo
и GetString: Bar
.Last modified 3yr ago