【C#学习】16表达式,语句详解(04)迭代语句,跳转语句


迭代语句(循环语句)包括:while语句,do语句,for语句,foreach语句
跳转语句包括:break语句,continue语句,goto语句,return语句,throw语句
由于迭代语句中的while语句,do语句与跳转语句中的break语句,continue语句联系紧密,所以放在一起整理

迭代语句的功能:在某个条件的控制下,让某一段逻辑(循环体)反复执行

1.while语句

功能:while语句的循环体可能执行零次或多次(有可能一次也不执行)
语法while ( boolean-expression ) embedded-statement
while为关键字,括号中的布尔表达式为循环条件,如果值为true,执行循环体embedded-statement
代码示例:
(编写一个小游戏:用户输入两个数值,相加需为100,每次成功加一分,直到输入错误,显示总得分,退出游戏)
在这里插入图片描述

2.do语句

do语句也称do while语句
功能:在条件控制下,让循环体执行一次或多次
语法do embedded-statement while ( boolean-expression ) ;
上述小游戏用do语句实现:
在这里插入图片描述

3.continue语句

功能放弃当前的这次循环,立刻开始下一次新的循环
改进上述小游戏,使出现异常时放弃本轮游戏,立刻开始下一轮
在这里插入图片描述

4.break语句

功能:立刻结束循环语句,程序继续执行循环语句后的语句
改进上述小游戏,用户不想再玩儿时输入"end"退出游戏
在这里插入图片描述

注意:由于循环语句本身也是嵌入式语句,所以,也可以将循环语句结构中的嵌入式语句再写入循环语句,从而形成二重,三重甚至是多重循环,此时,continue,break,永远只会影响到直接包含它的那一层循环

5.for语句

for语句的最佳应用场合:计数循环(某个循环的循环次数是固定的,这个循环次数由一个循环变量空值)

用do while语句写计数循环
在这里插入图片描述
缺点:循环变量,循环变量的判断以及循环变量的变化是分开写的,编写者得时刻注意不要落掉某一个

用for语句写计数循环
在这里插入图片描述
如图,用for语句写计数循环就会简单很多

for语句的格式:
for ( for-initializer(opt ) ; for-condition(opt) ; for-iterator(opt) ) embedded-statement
for-initializer(opt ):初始化器,一般都是声明一个变量,并初始化其值
for-condition(opt):for循环得以执行的条件,为true时执行循环体
for-iterator(opt):每次执行完循环体,它都会被执行
embedded-statement:循环体

圆括号中的两个分号必须要写,如果不写括号中的其他三个部分,只写两个分号,就是一个死循环结构

for语句的执行顺序

(1)for语句开始执行时,初始化器会被执行,且只执行一次
(2)紧接着执行 for-condition,判断for循环体是否能够得到执行;for-condition值为true时,执行循环体;否则反之
(3)执行完循环体,返回来执行 for-iterator
(4)跳到步骤(2)——再次对循环条件进行求值,判断是否开始下一次循环
(5)一旦循环条件变为false,就跳出循环

做一个算法题,打印出99乘法表
在这里插入图片描述
在这里插入图片描述

一个建议:在做算法题的时候,一定要写总结,总结的多了,才会达到触类旁通的效果

6.foreach语句

foreach语句的最佳应用场合:对集合进行遍历
foreach语句,集合遍历循环
功能:枚举一个集合中的元素(遍历这个集合),并且,在遍历这个集合时,每访问到一个元素,就可以对这个元素执行一次相关的嵌入语句(也就是每访问一个元素,就执行一次循环体,直到访问完全部元素,循环结束)
语法foreach ( local-variable-type identifier in expression ) embedded-statement

需要补充的相关知识:

(1)什么样的集合可以被遍历?

在C#中所有的数组类型,它的基类都是 “Array” 这个类;(go to definition),一个类,冒号后跟着的内容,就是这个类的基类和基接口,单词前有大写的 “I”(表示interface),那么就是接口;
C#中,所有实现了 “IEnumerable” 这个接口的类,就是可以被遍历的集合
在这里插入图片描述

(2)什么是迭代器?

迭代器:Enumerator
C#中所有能够被迭代的集合,都能获得自己的迭代器
"指月"的故事:
你问我:什么是月亮?
我的手指向月亮
我是想告诉你:我指的东西是月亮
而不是我的手指是月亮
天上有10个月亮
我挨个指过去,让你访问每一个月亮
我的手指,就是迭代器

如何使用迭代器对集合进行遍历?

先go to definition,查看迭代器的用法
在这里插入图片描述
在这里插入图片描述
代码:
在这里插入图片描述

foreach循环,就是对集合遍历的 “简记法”

foreach ( local-variable-type identifier expression ) embedded-statement
local-variable-type identifier :声明迭代变量,相当于迭代器
in:关键字
expression :对该表达式求值的结果是一个集合
embedded-statement:循环体
在这里插入图片描述

7.goto语句,throw语句,return语句

(1)goto语句:已经不是主流语句了,不做过多介绍,在switch语句中已经见过
(2)throw语句:try语句中已经做过整理
再次强调:throw语句的语法较灵活,关键字后可以跟一个异常类型的变量,也可以什么都不跟
(3)return语句

使用return语句需要注意的几点:

<1>尽早return原则
尽早return的好处:可以让读这段代码的人立刻鉴别出来参数在什么情况下是有问题的;还可以避免整个方法写出来头重脚轻,使代码结构更加清晰
代码体会
在这里插入图片描述
在这里插入图片描述

<2>如果写的方法的返回值不是void类型,而且在方法体中使用了选择语句,那么就必须保证选择语句的每一个分支度能够让该方法return
在这里插入图片描述

8.其他语句

(1)空语句 ;
在这里插入图片描述

(2)标签语句
在这里插入图片描述

(3)checked,unchecked语句
在这里插入图片描述

(4)using语句,(讲接口时讲)
(5)yield语句,(讲集合)
(6)lock语句,(讲多线程)

9.叮嘱

(1)看书,看文档
(2)动手写代码
(3)熟练使用搜索引擎

发布了29 篇原创文章 · 获赞 3 · 访问量 945

猜你喜欢

转载自blog.csdn.net/weixin_44813932/article/details/103848275