Циклы очень распространены при программировании. Они используются для перебора списка или массива или выполнения до тех пор, пока не будет достигнуто определенное условие. Существуют разные виды циклов, и на этот раз я хочу показать вам все о foreach в C#.

Что такое цикл Foreach?

foreach проходит по списку или массиву, мы называем это итерируемым элементом. С помощью foreach вы назначаете переменную итерируемому элементу, который представляет один элемент в этом итерируемом элементе. Мы называем это элементом. В каждом цикле элемент является представлением элемента в итерируемом элементе. Он начинается с первого (индекс 0), а в следующем цикле это второй элемент (индекс 1) и так далее.

Foreach выглядит как цикл for, но цикл for имеет другие операторы и может выполняться с другим условием. Foreach всегда выглядит одинаково:

for(element in iterable-item)
{

}

foreach всегда начинается с foreach и состоит из двух элементов:

  • Элемент представляет элемент из итерируемого элемента. Он должен быть объявлен как тот же тип.
  • Итерируемый элемент — это объект, определенный в IEnumerable, что делает его списком. Подумайте, например, о словаре, списке, массиве и многом другом.

Некоторые примеры

Ниже приведены несколько примеров, показывающих, как работает foreach в C#.

Базовый пример

List<string> movieTitles = new()
{
    "The Matrix", "Shrek", "Inception", "The Muppets", "Jaws"
};

foreach (string title in movieTitles)
{
    Console.WriteLine(title);
}

В foreach я сначала объявляю тип и имя элемента. После этого я помещаю in, а затем итерируемый элемент, который в данном случае является строкой List‹. В теле foreach я могу использовать title (элемент), чтобы вывести название фильма на экран.

Его также можно использовать со списком объектов, как показано ниже:

List<Movie> movieTitles = new()
{
    new() { Title = "The Matrix", Rating = 5 },
    new() { Title = "Shrek", Rating = 2 },
    new() { Title = "Inception", Rating = 5 },
    new() { Title = "The Muppets", Rating = 3 },
    new() { Title = "Jaws", Rating = 2 }
};

foreach (Movie movie in movieTitles)
{…