Урок 28. Цикл foreach C#
На 28-м уроке учебника по основам C# мы продолжим изучение команд управления течением программы, доступных разработчику C#. В этой статье рассматривается структура цикла foreach, который проходит через каждый элемент в коллекции.
Коллекции
Платформа .NET framework и язык программирования C# позволяют создавать группы связанных объектов, известных как коллекции. Доступны различные типы коллекций, некоторые из которых будут описаны в следующих материалах. Один тип уже был рассмотрен в учебнике и будет использоваться для демонстрации использования цикла foreach. Это массив.
Часто, когда каждый элемент обрабатывается по очереди, необходимо выполнить цикл через каждый объект или переменную в коллекции или массиве. Оператор foreach предоставляет циклическую структуру для достижения этой цели. При использовании каждый элемент в коллекции обрабатывается последовательно до тех пор, пока на каждый элемент не будет создана ссылка или цикл не будет остановлен командой break.
В следующем примере выполняется итерация каждого значения в массиве целых чисел, определяя наибольшее значение:
int[] values = new int[] {1,3,5,7,9,10,8,6,4,2}; int maxValue = int.MinValue; foreach(int i in values) { maxValue = i > maxValue ? i : maxValue; } Console.WriteLine("Largest = {0}", maxValue); // Выведет "Largest = 10"Синтаксис команды foreach выглядит следующим образом:
команда foreach (тип итератора in коллекция);Переменная iterator является первым объектом интереса. В примере это переменная 'i'. Когда цикл выполняется в первый раз, переменная итератора загружается со значением первого элемента в массиве. Для каждой последующей итерации итератор принимает значение следующего элемента до тех пор, пока не будут обработаны все значения.
Примечание: если коллекция или массив содержит ссылочные типы, а не типы значений, итератор действует как ссылка на каждый объект по очереди. Это позволяет изменять каждый объект в массиве или коллекции во время цикла.
Часть «тип» важна. Она определяет тип данных итератора во время выполнения цикла. Если тип несовместим с каким-либо элементом коллекции, возникает исключение. По этой причине тип, используемый в примере, совпадает с типом элементов массива int .
Часть «коллекция» команды foreach называет коллекцию или массив, который необходимо выполнить. В примере это массив "values".
Раздел команды ведет себя так же, как для цикла for, описанного ранее в учебнике. Эта команда должна выполняться во время каждой итерации. Если тело цикла включает несколько команд, они предоставляются в блоке кода.
Выход из цикла
Цикл foreach является гораздо более простой структурой управления, чем цикл for, описанный ранее. Однако, как и во всех циклах, это позволяет использовать команду break для выхода из цикла раньше полного завершения. Следующий пример демонстрирует это с поиском строки в массиве.
string[] items = new string[] { "A", "B", "C", "D", "E", "F", "G", "H" }; int pos; foreach (string s in items) { if (s == "C") { Console.WriteLine("C найдено!"); // Выведет " C найдено!" break; } }Раннее завершение итерации цикла
Как и в цикле for, можно завершить одну итерацию раньше и продолжить следующую итерацию с помощью команды continue. В следующем примере оператор modulus используется для определения того, какие из элементов массива являются нечетными или четными числами, выводя только нечетные значения.
int[] values = new int[] { 1, 3, 5, 7, 9, 10, 8, 6, 4, 2 }; int maxValue = int.MinValue; foreach (int i in values) { if ((i % 2) == 0) { continue; } Console.WriteLine(i); // Выведет только нечетные числа }
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.