for (справочник по C#)for (C# reference)

Оператор for выполняет оператор или блок операторов, пока определенное логическое выражение равно значению true.The for statement executes a statement or a block of statements while a specified Boolean expression evaluates to true.

В любой момент в блоке операторов for вы можете прервать цикл с помощью оператора break или перейти к следующей итерации в цикле с помощью оператора continue.At any point within the for statement block, you can break out of the loop by using the break statement, or step to the next iteration in the loop by using the continue statement. Также можно выйти из цикла for с помощью операторов goto, return или throw.You also can exit a for loop by the goto, return, or throw statements.

Структура оператора forStructure of the for statement

Оператор for определяет разделы инициализатора, условия и итератора:The for statement defines initializer, condition, and iterator sections:

for (initializer; condition; iterator)
    body

Все три раздела добавляются по желанию.All three sections are optional. Тело цикла является оператором или блоком операторов.The body of the loop is either a statement or a block of statements.

В следующем примере показан оператор for со всеми определенными разделами:The following example shows the for statement with all of the sections defined:

for (int i = 0; i < 5; i++)
{
    Console.WriteLine(i);
}

Раздел инициализатораThe initializer section

Операторы в разделе инициализатора выполняются только один раз перед входом в цикл.The statements in the initializer section are executed only once, before entering the loop. Раздел инициализатора представляет собой один из следующих объектов:The initializer section is either of the following:

  • Объявление и инициализация локальной переменной цикла, к которой невозможно получить доступ вне цикла.The declaration and initialization of a local loop variable, which can't be accessed from outside the loop.

  • Ноль или более выражений операторов из следующего списка, разделенные запятыми:Zero or more statement expressions from the following list, separated by commas:

    • оператор присваиванияassignment statement

    • вызов методаinvocation of a method

    • префиксное или постфиксное выражение приращения, такое как ++i или i++prefix or postfix increment expression, such as ++i or i++

    • префиксное или постфиксное выражение декремента, такое как --i или i--prefix or postfix decrement expression, such as --i or i--

    • создание объекта с помощью оператора newcreation of an object by using the new operator

    • выражение awaitawait expression

Раздел инициализатора в приведенном выше примере объявляет и инициализирует локальную переменную цикла i:The initializer section in the example above declares and initializes the local loop variable i:

int i = 0

Раздел условияThe condition section

Раздел условия, если он определен, должен быть логическим выражением.The condition section, if present, must be a boolean expression. Это выражение оценивается перед каждой итерацией цикла.That expression is evaluated before every loop iteration. Если раздел условия отсутствует или логическое выражение имеет значение true, выполняется следующая итерация цикла. В противном случае выполняется выход из цикла.If the condition section is not present or the boolean expression evaluates to true, the next loop iteration is executed; otherwise, the loop is exited.

Раздел условия в приведенном выше примере определяет, завершится ли цикл в зависимости от значения локальной переменной цикла:The condition section in the example above determines if the loop terminates based on the value of the local loop variable:

i < 5

Раздел итератораThe iterator section

Раздел итератора определяет, что происходит после каждой итерации тела цикла.The iterator section defines what happens after each iteration of the body of the loop. Раздел итератора содержит ноль или более следующих выражений оператора, разделенных запятыми:The iterator section contains zero or more of the following statement expressions, separated by commas:

  • оператор присваиванияassignment statement

  • вызов методаinvocation of a method

  • префиксное или постфиксное выражение приращения, такое как ++i или i++prefix or postfix increment expression, such as ++i or i++

  • префиксное или постфиксное выражение декремента, такое как --i или i--prefix or postfix decrement expression, such as --i or i--

  • создание объекта с помощью оператора newcreation of an object by using the new operator

  • выражение awaitawait expression

Раздел итератора в приведенном выше примере увеличивает локальную переменную цикла:The iterator section in the example above increments the local loop variable:

i++

ПримерыExamples

В следующем примере показано несколько менее распространенных вариантов использования разделов оператора for: присваивание значения внешней переменной цикла в разделе инициализатора, вызов метода в разделах инициализатора и итератора и изменение значения двух переменных в разделе итератора.The following example illustrates several less common usages of the for statement sections: assigning a value to an external loop variable in the initializer section, invoking a method in both the initializer and the iterator sections, and changing the values of two variables in the iterator section. Нажмите Запустить для выполнения примера кода.Select Run to run the example code. После этого можно изменить код и запустить его еще раз.After that you can modify the code and run it again.

int i;
int j = 10;
for (i = 0, Console.WriteLine($"Start: i={i}, j={j}"); i < j; i++, j--, Console.WriteLine($"Step: i={i}, j={j}"))
{
    // Body of the loop.
}

В следующем примере определен бесконечный цикл for:The following example defines the infinite for loop:

for ( ; ; )
{
    // Body of the loop.
}

Спецификация языка C#C# language specification

Дополнительные сведения см. в разделе Оператор for в документации Предварительная спецификация C# 6.0.For more information, see The for statement section of the C# language specification.

См. такжеSee also