for循环的标题中允许什么?

Gur*_*epS 2 c# loops

在C#中,我在循环的标题中看到了一些奇怪而复杂的逻辑.

for循环的标题中有什么/不可能?是否可以有多个递增器/变量?

谢谢

jas*_*son 8

是否可以有多个递增器/变量?

对的,这是可能的.也就是说,这是完全合法的:

// reverse b into a
for (int i = 0, j = n - 1; i < n; i++, j--) {
    a[i] = b[j]
}
Run Code Online (Sandbox Code Playgroud)

for循环的标题中有什么/不可能?

这正是语法告诉你的.这是forC#语句的语法:

for-statement:
    for(for-initializer_opt; for-condition_opt; for-iterator_opt)
        embedded-statement
for-initializer:
    local-variable-declaration
    statement-expression-list
for-condition:
    boolean-expression
for-iterator:
    statement-expression-list
statement-expression-list:
    statement-expression
    statement-expression-list, statement-expression
Run Code Online (Sandbox Code Playgroud)

请注意,无论是for-initializerfor-iterator通过允许复合语句statement-expression-list.有关其他详细信息,请参阅语言规范的 §8.8.3 .您可能还想访问规范的§8.5.1以确切了解local-variable-declaration(提示:int i = 0, j = n - 1, k = 42合法但int i = 0, j = n - 1, long k = 42不是).