最近,我在一本书中看到了这段代码。你能解释一下这段代码的含义以及它是如何工作的吗?
int i = 0;
for (; i != 10; )
{
Console.WriteLine(i);
i++;
}
最近,我在一本书中看到了这段代码。你能解释一下这段代码的含义以及它是如何工作的吗?
int i = 0;
for (; i != 10; )
{
Console.WriteLine(i);
i++;
}
它循环。
由于您在上面已经设置了 i = 0
,因此他们省略了 for
循环的该部分。另外,由于您是在末尾递增变量,他们也省略了那部分。
他们基本上只是将 for
循环转换为 while
循环。
可能更优雅的写法是:
int i = 0;
while( i != 10 )
{
Console.WriteLine(i);
i++;
}
在C#规范中,for语句的定义如下:
for (for-initializer; for-condition; for-iterator) embedded-statement
for-initializer、for-condition和for-iterator这三个部分都是可选的。即使这些部分缺失,代码也能正常工作。
如果省略了for-condition,循环将像存在一个始终为真的for-condition一样运行,因此会形成无限循环,需要使用跳转语句(break、goto、throw或return)来退出循环。
如果以正常形式更容易理解,那么它几乎等同于这个:
for (int i = 0; i != 10; i++)
{
Console.WriteLine(i);
}
除了在循环完成后将i
留给用户使用之外,它并不仅限于for
循环的范围。
这与此循环相同:
for (int i = 0; i != 10; i++) {
Console.WriteLine(i);
}
除此之外,变量i是在循环外声明的,因此其作用域更大。
在for
循环中,第一个参数是初始化,第二个参数是条件,第三个参数是增量(实际上可以是任何东西)。该书展示了如何将初始化和增量移到代码中实际执行的位置。该循环也可以表示为等效的while
循环:
int i = 0;
while (i != 10) {
Console.WriteLine(i);
i++;
}
这里变量i
也在循环外声明,因此作用域更大。
这段代码可以重新编写,(在您的代码片段的上下文中 - 如所述不是等效的。)如下:
for (int i = 0; i != 10; i++)
Console.WriteLine(i);
你正在使用“for”循环,就像使用“while”一样
这与以下内容相同:
for (int i = 0; i != 10; i++) {
Console.WriteLine(i);
}
由于 int i
是在顶部声明的,所以它不在 for 循环中。
这很像。
for(int i = 0; i!=10; i++)
{
/// do your code
}