Урок 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, Уроки по си шарп, циклы, си шарп, foreach




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Объектно-ориентированное программирование в C#: кратко о ключевых концепциях и терминологии
Урок 43. Функции C#
Урок 11. Директивы v-text, v-once, v-pre и v-html Vue 3