Цикл foreach в C#: перебор массивов и коллекций легко
Цикл foreach в C#
Узнайте, как цикл foreach упрощает итерацию по массивам и коллекциям в C#, повышая читаемость и производительность.
В C# цикл foreach предлагает более чистую, выразительную альтернативу традиционному for при работе с массивами, списками и другими коллекциями. Он автоматически управляет индексацией, делая код проще для чтения и менее подверженным ошибкам.
Перед погружением повторите базовые темы:
Синтаксис цикла foreach
foreach (element in iterableItem) {
// тело foreach
}
iterableItem может быть массивом, списком или любым типом, реализующим IEnumerable.
Как работает foreach

Ключевое слово in на каждой итерации выбирает следующий элемент из iterableItem и присваивает его переменной element. Цикл выполняется один раз на элемент, поэтому число итераций равно числу элементов в коллекции.
Пример 1: Печать массива циклом for
using System;
namespace Loop {
class ForLoop {
public static void Main(string[] args) {
char[] myArray = {'H','e','l','l','o'};
for (int i = 0; i < myArray.Length; i++) {
Console.WriteLine(myArray[i]);
}
}
}
}
Пример 2: Печать массива циклом foreach
using System;
namespace Loop {
class ForEachLoop {
public static void Main(string[] args) {
char[] myArray = {'H','e','l','l','o'};
foreach (char ch in myArray) {
Console.WriteLine(ch);
}
}
}
}
Обе программы дают:
H e l l o
Версия с foreach короче, устраняет вычисление индексов и снижает риск ошибок на единицу (off-by-one).
Пример 3: Подсчет мужчин и женщин в массиве пола
Пример подсчитывает вхождения 'm' и 'f' в массиве.
using System;
namespace Loop {
class GenderCount {
public static void Main(string[] args) {
char[] gender = {'m','f','m','m','m','f','f','m','m','f'};
int male = 0, female = 0;
foreach (char g in gender) {
if (g == 'm') male++;
else if (g == 'f') female++;
}
Console.WriteLine("Number of male = {0}", male);
Console.WriteLine("Number of female = {0}", female);
}
}
}
Вывод:
Number of male = 6 Number of female = 4
Пример 4: Суммирование списка с foreach
Использование List<int> показывает, что foreach отлично работает с обобщенными коллекциями.
using System;
using System.Collections.Generic;
namespace Loop {
class SumList {
public static void Main(string[] args) {
var numbers = new List<int>() { 5, -8, 3, 14, 9, 17, 0, 4 };
int sum = 0;
foreach (int number in numbers) {
sum += number;
}
Console.WriteLine("Sum = {0}", sum);
Console.ReadLine();
}
}
}
Результат:
Sum = 44
И для массивов, и для коллекций foreach дает более чистый, поддерживаемый код. Предпочитайте его, когда нужно только читать элементы и не требуется прямое манипулирование индексами.
Язык C
- Циклы while и do-while в C#: синтаксис, примеры и лучшие практики
- Цикл for в C#: синтаксис, поток выполнения и практические примеры
- Освоение цикла for в C++: пошаговое руководство
- Циклы while и do-while в C++: освоение повторений в коде
- Цикл for в C: синтаксис, механика и практические примеры
- Циклы while и do-while в C: практические примеры
- Мастерство цикла for в Python: Синтаксис, примеры и продвинутые паттерны
- Мастерство цикла while в Python: Синтаксис, примеры и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Цикл do-while в C++: синтаксис, примеры и вложенные циклы