为什么我在C#中的for循环在条件中需要分号?

问题描述:

for (int frame <= 10; frame++) 
{ 
} 

例如,我有这个代码,但它不工作。但是,当我输入一个分号时,它就会起作用。为什么是这样?为什么我在C#中的for循环在条件中需要分号?

for (; frame <= 10; frame++) 
{ 
} 
+0

你不只是加分号;你也删除了'int',它修复了一个不同的语法错误。 – Blorgbeard

+0

顺便说一句,你应该选择下面的答案。 – canhazbits

这就是for的工作原理。它有三个部分

msdn文档:

for (initializer; condition; iterator) 
    body 

基本上,通过把一个额外的分号,你给它一个空的初始化部分。

因为for循环的第一部分是声明/初始化,所以它是可选的。把;只是转向下一部分,即条件。

+0

如果它是可选的,我还能够将其作为初始值设定项吗? – user3158491

+0

您可以在该行之前声明该变量。 –

,因为它是语言语法http://msdn.microsoft.com/en-us/library/ch45axte.aspx

for (initializer; condition; iterator) 
    body 

C#语法决定了for语句具有:

1)一种初始

2)的条件

3)一种迭代器

您不必在这些部分中添加任何内容,但为了编译器的原因,它们仍然需要在那里。

http://msdn.microsoft.com/en-us/library/ch45axte.aspx

编辑: 顺便说一句,你可以使用一个while循环,而不是:

while (frame++ <= 10) 
{ 
    ... 
} 

我觉得你的for循环(第2例)的作品,因为你已经初始化变量框架 您的for循环开始之前。

例如:

int frame = 0; 
for(; frame <= 10; frame++) 
{ 

}