Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpGvFeL 67 of 509 menu
◀ ▶

Связь foreach с перечислителем в C#

Компилятор разворачивает foreach в вызов GetEnumerator, цикл while (MoveNext) и чтение Current. Если перечислитель реализует IDisposable, обёртка try/finally вызовет Dispose даже при исключении в теле цикла.

Для массива и списка это обычный обход: индекс ведёт компилятор. У списка есть защита от изменения набора во время прохода - добавление элемента бросает InvalidOperationException. Замена значения в ячейке массива так не проверяется.

Умножим коды заказа на 10. Компилятор сам получит перечислитель и будет вызывать MoveNext, пока элементы не кончатся. Порядок совпадает с порядком в массиве:

int[] ids = { 1, 2, 3 }; foreach (int id in ids) { Console.WriteLine(id * 10); // выведет 10, 20, 30 }

В массиве лежат цены 40 и 15. Обойдите его и выведите сумму.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить