ECMA-334 C# Language Specification15.8.3: The for statement |
The for statement evaluates a sequence of initialization expressions and then, while a condition is true, repeatedly executes an embedded statement and evaluates a sequence of iteration expressions.
(
for-initializer
opt ;
for-condition
opt ;
for-iterator
opt )
embedded-statement
local-variable-declaration
statement-expression-list
boolean-expression
statement-expression-list
statement-expression
statement-expression-list
,
statement-expression
The for-initializer
, if present, consists of either a local-variable-declaration
(15.5.1) or a list of statement-expression
s (15.6) separated by commas. The scope of a local variable declared by a for-initializer
starts at the local-variable-declarator
for the variable and extends to the end of the embedded statement. The scope includes the for-condition
and the for-iterator
.
The for-condition
, if present, must be a boolean-expression
(14.16).
The for-iterator
, if present, consists of a list of statement-expression
s (15.6) separated by commas.
A for statement is executed as follows:
for-initializer
is present, the variable initializers or statement expressions are executed in the order they are written. This step is only performed once. for-condition
is present, it is evaluated. for-condition
is not present or if the evaluation yields true, control is transferred to the embedded statement. When and if control reaches the end point of the embedded statement (possibly from execution of a continue statement), the expressions of the for-iterator
, if any, are evaluated in sequence, and then another iteration is performed, starting with evaluation of the for-condition
in the step above. for-condition
is present and the evaluation yields false, control is transferred to the end point of the for statement. Within the embedded statement of a for statement, a break statement (15.9.1) may be used to transfer control to the end point of the for statement (thus ending iteration of the embedded statement), and a continue statement (15.9.2) may be used to transfer control to the end point of the embedded statement (thus executing another iteration of the for statement).
The embedded statement of a for statement is reachable if one of the following is true:
for-condition
is present. for-condition
is present and does not have the constant value false. The end point of a for statement is reachable if at least one of the following is true:
for-condition
is present and does not have the constant value true.