Цикл foreach в C#

В этой статье вы познакомитесь с циклом foreach и научитесь применять этот оператор для перебора массивов и коллекций. 

В C# есть простая в использовании и элегантная альтернатива циклу for. Цикл foreach во время работы с массивами и коллекциями выполняет итерацию по их элементам. Цикл foreach выполняет итерацию по каждому элементу — именно поэтому он называется foreach. 

Синтаксис

foreach (элемент in итерируемый объект)
{
  // тело цикла foreach
}

 Блок-схема

Ключевое слово in в цикле foreach используется для итерации по итерируемому объекту. Это слово получает значение следующего элемента коллекции и присваивает его переменной элемент.

Во время первой итерации цикла переменной элемент присваивается значение первого элемента итерируемый объект. На второй итерации — второго и т. д. 

Количество итераций цикла foreach равно количеству элементов в массиве или коллекции.

Пример 1. Выводим элементы массива с помощью for

using System;
 
namespace Loop
{
    class ForLoop
    {
        public static void Main(string[] args)
        {
            char[] myArray = {'П','р','и','в','е', 'т'};
 
            for(int i = 0; i < myArray.Length; i++)
            {
                Console.WriteLine(myArray[i]);
            }
        }
    }
}

То же самое можно сделать с помощью foreach.

Пример 2. Выводим элементов массива с помощью foreach

using System;
 
namespace Loop
{
    class ForEachLoop
    {
        public static void Main(string[] args)
        {
            char[] myArray = {'П','р','и','в','е', 'т'};
 
            foreach(char ch in myArray)
            {
                Console.WriteLine(ch);
            }
        }
    }
}

Вывод у обеих программ одинаковый:

П
р
и
в
е
т

В программе выше происходит итерация по массиву myArray. Например, во время первой итерации переменной ch присваивается первый элемент массива — myArray[0].

То же самое происходит и на последней итерации — печатается ch, которой присвоено значение myArray[5]

При сравнении может показаться, что цикл foreach проще понять и читать. Это благодаря простому и понятному синтаксису. 

Следовательно, цикл foreach предпочтителен, если нам нужно провести итерацию по массиву или коллекции.

Пример 3. Обходим массив, содержащий данные о поле соискателя

using System;
 
namespace Loop
{
    class ForEachLoop
    {
        public static void Main(string[] args)
        {
            char[] gender = {'м','ж','м','м','м','ж','ж','м','м','ж'};
            int male = 0, female = 0;
            foreach (char g in gender)  
            {
                if (g == 'м')
                        male++;
                else if (g =='ж')
                        female++;
            }
            Console.WriteLine("Количество мужчин = {0}", male);
            Console.WriteLine("Количество женщин = {0}", female);
        }
    }
}

Вывод:

Количество мужчин = 6
Количество женщин = 4

Пример 4. Работа цикла foreach со списком (коллекцией)

Эта программа находит сумму элементов списка:

using System;
using System.Collections.Generic;
 
namespace Loop
{
    class ForEachLoop
    {
        public static void Main(string[] args)
        {
            var numbers = new List() {5,-8,3,14,9,17,0,4};
            int sum = 0;
 
            foreach(int number in numbers)
            {
                sum += number;
            }
            Console.WriteLine("Сумма = {0}", sum);
        }
    }

}

Вывод:

Сумма = 44

В этой программе цикл foreach используется для обхода коллекции. Обход коллекции аналогичен обходу массива.

На первой итерации цикла number присваивается значение первого элемента списка. На второй итерации — второго элемента списка. Цикл продолжается до тех пор, пока в списке остаются элементы. 

codechick

СodeСhick.io - простой и эффективный способ изучения программирования.

2024 ©