欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C#从入门到精通 » 正文

for语句的用法和使用示例

创建时间:2013年09月11日 21:37  阅读次数:(6163)
分享到:
大多数while循环语句都具有以下常规结构:
initialization
while (Booleanexpression)
{
statement
update control variable
}

使用for语句,可以写出以上结构的一个更正规的版本,具体的做法是将initialization(初始化)、Boolean expression(布尔表达式)与updatecontrol variable(更新控制变量)合并到一起。用过for语句之后,就能体会到它的好处,因为它能使我们牢牢记住这三个必要的部分。以下是for语句的语法:
for (initialization; Booleanexpression; updatecontrolvariable)
statement

前面展示过while循环的一个例子,它能显示0~9的整数。现在要用for循环来改写它:
for (int i = 0; i <10; i++)
{
Console.WriteLine(i);
}

初始化(int i = 0)只在循环开始时发生一次。如果布尔表达式(i < 10)的求值结果为true,就运行语句(Console.WriteLine(i);)。随后,控制变量将进行更新(i++),布尔表达式将重新求值,如果仍为true,语句将再次执行,控制变量将进行更新,布尔表达式将重新求值……如此反复。

注意三点:
1) 初始化只发生一次;
2) 循环主体中的语句至少执行一次,才会对控制变量进行更新;
3) 在更新控制变量之前,要先重新求值布尔表达式。

for语句的三个部分都可以省略。如果省略布尔表达式,布尔表达式就默认为true。以下for语句将一直运行:
for (int i = 0; ;i++)
{
Console.WriteLine("谁来阻止我!");
}

如果省略初始化和更新部分,会得到一个看起来怪怪的while循环:
int i = 0;
for (; i <10; )
{
Console.WriteLine(i);
i++;
}

注意 for语句的初始化、布尔表达式和更新控制变量这三个部分必须用分号分隔,即使某个部分的实际内容并不存在。

如有必要,可在一个for循环中提供多个初始化语句和多个更新语句(但布尔表达式只能有一个)。为此,请用逗号分隔不同的初始化和更新语句,如下例所示:
for (int i = 0, j = 10; i <= j; i++, j--)
{
...
}

作为最后一个例子,我们用for循环来重写前一个练习中的while循环:
for (string line = reader.ReadLine(); line != null; line= reader.ReadLine())
{
source.Text += line + ‘\n’;
}

提示:作为一个良好的编程习惯,应该用一对{}来显式定义if,while和for语句的主体,即使其中只包含一个语句。采用代码块的形式,以后可以更加方便地在块中添加语句。假如事先不是代码块,那么在添加另一个语句时,就必须记住同时添加语句和大括号。但是,大括号很容易被遗忘?

5.3.1 理解for语句的作用域
前面说过,可以在for语句的“初始化”部分声明一个新变量。该变量的作用域限制在for语句的主体中。一旦for语句结束,变量就会消失。这个规则造成了两个非常重要的结果。首先,不能在for语句结束之后使用那个变量,因为它已经不在作用域中。下面是一个例子:
for (int i = 0; i <10; i++)
{
...
}
Console.WriteLine(i); // 编译时错误

其次,可以接连写两个或者更多的for语句,并在其中使用相同的变量名,因为每个变量都在一个不同的作用域中。下面是一个例子:
for (int i = 0; i < 10; i++)
{
...
}
for (int i = 0; i <20; i += 2) // okay
{
...
}
{鱊0購*N顣槝(u 軴c漁V? yr'`h?y0N
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 44+0=? 的结果(结果是:44)
结  果: