На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Урок 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

Читайте также:




Работа с ini на C#
Пример вычисления по формуле в C++


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.