Циклы в C#: for, while, do-while и управление итерациями
Зачем нужны циклы
Циклы позволяют выполнять блок кода многократно. Операторы выполняются последовательно, но циклы обеспечивают более сложные пути выполнения.
Типы циклов в C#
| # | Цикл | Описание |
|---|---|---|
| 1 | while | Повторяет пока условие истинно. Проверка перед выполнением тела. |
| 2 | for | Выполняет последовательность инструкций заданное число раз. Управляет переменной цикла. |
| 3 | do...while | Аналогичен while, но проверка условия после выполнения тела (хотя бы один раз). |
| 4 | Вложенные циклы | Один цикл внутри другого (while, for или do...while) |
Цикл while
while (условие)
{
// тело цикла
}
Пример:
int i = 1;
while (i <= 5)
{
Console.WriteLine(i);
i++;
}
// Вывод: 1 2 3 4 5
Цикл for
for (инициализация; условие; итерация)
{
// тело цикла
}
Пример:
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
Все три части опциональны: for (;;) — бесконечный цикл.
Цикл do...while
do
{
// тело цикла
} while (условие);
Пример:
int i = 1;
do
{
Console.WriteLine(i);
i++;
} while (i <= 5);
Цикл foreach
Для перебора коллекций, реализующих IEnumerable (массивы, списки и др.):
foreach (тип элемент in коллекция)
{
// тело
}
Пример:
int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int n in numbers)
{
Console.WriteLine(n);
}
Операторы управления циклами
| Оператор | Описание |
|---|---|
break | Прерывает цикл (или switch) и передаёт управление за его пределы. |
continue | Пропускает остаток текущей итерации и переходит к проверке условия (для while/do-while) или к итерации (для for). |
goto | Переход к метке (использовать с осторожностью). |
return | Выходит из метода, завершая цикл. |
Пример break и continue
for (int i = 1; i <= 10; i++)
{
if (i == 5) break; // выход при i=5
if (i % 2 == 0) continue; // пропуск чётных
Console.WriteLine(i); // вывод: 1, 3
}
Бесконечные циклы
Цикл становится бесконечным, если условие никогда не становится false. Традиционно используется for(;;):
for (;;)
{
Console.WriteLine("Бесконечный цикл");
// нужен break внутри для выхода
}
Вложенные циклы
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 3; j++)
{
Console.WriteLine($"i={i}, j={j}");
}
}
Лучшие практики
- Предпочитайте
foreachдля перебора коллекций — чище и безопаснее. - Используйте
forкогда нужен индекс или сложное управление итерацией. - Избегайте изменения коллекции внутри
foreach— используйтеforс обратным порядком или LINQ. - Минимизируйте область видимости переменных цикла (объявляйте в заголовке
for). - Для бесконечных циклов используйте
while (true)илиfor (;;)с явнымbreak.
Язык C
- Фазово-синхронизационные петли (PLL): основы, применение и лучшие практики проектирования
- Освоение оператора switch в C#: синтаксис, примеры и лучшие практики
- Циклы while и do-while в C#: синтаксис, примеры и лучшие практики
- Цикл for в C#: синтаксис, поток выполнения и практические примеры
- Оператор break в C#: как и когда использовать
- Оператор continue в C#: как эффективно пропускать итерации циклов
- Цикл foreach в C#: перебор массивов и коллекций легко
- Освоение цикла for в C++: пошаговое руководство
- Освоение циклов Python: for, while, break, continue и enumerate
- Базовый синтаксис C: токены, идентификаторы, ключевые слова и пробелы