C# 迭代语句综合演练(第二部分)- for、foreach
介绍
这是C# 迭代语句三部分系列文章的第二部分。在第一部分中,我们深入研究了while / do while循环。如果您错过了,请查看。
在本指南中,我们将重点介绍另一个重要的循环:for / foreach循环。
由于这是针对初学者的指南,因此我尽力使用生动的视觉效果和示例来帮助您理解。
- 首先,我将从一个有趣的场景开始。
- 然后我会给你们展示一下迭代语句的代码模板和流程图。
for 循环
设想
想象一下这样的场景:
这次我们开发一个清洁机器人,我们给它一个任务列表,比如{“卧室”,“厨房”,“厕所”},它就应该把所有房间都打扫干净。
for和foreach循环是解决这个问题的好选择。
为了
句法
按照惯例,我们首先学习for语句的语法:
for (initializer; condition; update_expression)
{
code_block;
}
for语句由初始化程序、条件、更新表达式、代码块组成:
- code_block表示循环中执行的逻辑。它可以包含多个语句,甚至是另一个循环块。
- 初始化程序是您要在进入循环之前执行的逻辑。通常,它用于循环变量的初始化。
- 条件是一个布尔表达式。它决定是否应该继续循环或退出循环。
- update_expression定义每个循环中的更新表达式。它在code_block之后执行。与initializer一样,它照常用于更新循环变量。
流程图
请看一下for循环流程图。它直观地显示了流程控制。
通过上面的流程图,我们可以搞清楚for循环的执行过程:
在循环之前,初始化程序只执行一次。这是声明和初始化循环变量的好机会。
检查是否满足条件。如果满足,则运行循环逻辑code_block。否则,终止循环。
在code_block之后,执行update_expression。在此处更新循环变量以供下一个条件检查。
回到第二步,再次判断条件。重复此过程,直到条件==False。
实践
我们已经了解了 for 循环的机制,现在是时候解决一个示例问题了:
string[] tasks = {"bedroom", "kitchen", "toilet"};
// loop variable i presents the index of tasks array
for (int i = 0; i < tasks.Length; ++i)
{
Console.WriteLine("mission complete: clean {0}", tasks[i]);
}
/*output:
mission complete: clean bedroom
mission complete: clean kitchen
mission complete: clean toilet */
高级用法
这四个部分(初始化程序、条件、更新表达式和代码块)中的每一个都是可选的。此外,它们还可以包含多个语句:
- code_block使用;来分隔语句。
- 初始化程序和更新表达式使用,来分隔语句。
- 条件使用||或&&连接布尔表达式。
让我们练习这个复杂例子中所有部分中的多个语句:
给定两个数字:x和y。x从 0 开始,每次加 1;y从 12 开始,每次减 2。当x不大于y且产量小于 18 时,重复计算y和x之间的差值。
// x starts from 0 and add 1 each time; y starts from 12 and subtract 2 each time
// iteration when x is not greater than y and production less than 18
for (int x = 0, y = 12; x <= y && x * y < 18; ++x, y -= 2)
{
// calculate difference between y and x, then print out
int difference = y - x;
Console.WriteLine("x={0}, y={1}, difference={2}", x, y, difference);
}
/* output:
x=0, y=12, difference=12
x=1, y=10, difference=9
x=2, y=8, difference=6 */
foreach
句法
对于访问集合中元素的场景,foreach是最好的解决方案。
foreach的语法:
foreach (element in IEnumerable)
{
code_block;
}
- element表示集合中的当前元素。
- IEmuerable表示一个类似集合的数据结构,它实现了IEnumerable接口。我们稍后会讨论这个。
- code_block和其他的类似,它表示循环中执行的逻辑。
流程图
foreach循环流程图直观的展现了流程控制过程:
- 检查IEnumberable是否还有任何剩余元素。
- 如果是,则将其分配给element并在code_block中处理。否则,退出循环。
- 重复此过程,直到IEnumberable用尽。
实践
对于上述场景,对字符串数组中的元素执行以下任务:
string[] tasks = {"bedroom", "kitchen", "toilet"};
// foreach the element in string array tasks
foreach (string task in tasks)
{
Console.WriteLine("mission complete: clean {0}", task);
}
使用范围
foreach支持迭代所有类型的IEnumerable中的元素。那么什么是IEnumberable呢?
一个容易理解的解释是,IEnumberable是一个类似集合的数据结构,例如<font style="vertic
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~