美文网首页dotNETcsharp
C# Learning:迭代语句

C# Learning:迭代语句

作者: 月银秋 | 来源:发表于2020-04-01 13:01 被阅读0次

关于如何使用break语句,continue语句等对迭代语句进行控制请见我的另一篇文章《C# Learning:跳转语句》

while

while语句结构如下:

A
while(M)
    B
C

其中M是一个bool表达式(比如bool类型的变量,比如调用具有bool类型返回值的方法,常见的有“a > 1”)。
程序会这样执行:

  1. 执行A;
  2. 若M是true,则继续执行;否则前往4;
  3. 执行B,然后回到2;
  4. 执行C。

do(do-while)

do语句结构如下:

A
do
    B
while(M)
C

程序会这样执行:

  1. 执行A;
  2. 执行B;
  3. 若M是true,则回到2;否则前往4;
  4. 执行C。
    可以发现,do语句和while语句的区别在于先判断还是先执行,因此do语句最少也会执行过一次循环体,while语句有可能一次都不执行(M一开始就是false)。

for

do语句结构如下:

A
for(B; M; C)
    D
E

程序会这样执行:

  1. 执行A;
  2. 执行B;
  3. 若M是true,则继续执行;否则前往6;
  4. 执行D;
  5. 执行C,回到3;
  6. 执行E。
    其中,B、M、C都不是必填的,B、C不填,则不会执行任何内容,M不填视为true。因此可以发现,for语句可以完全代替while语句。

foreach

foreach语句是专门用于遍历集合的。
foreach语句格式为:

foreach (V v in x)
    A

其中x是要遍历的集合,v是自定义的变量名,可以在A中使用,每次循环会从x中取出下一个并置入v中,而V指定了v的类型。该段代码与以下代码完全等效(编译后结果一致):

{
    E e = ((C)(x)).GetEnumerator();
    try {
        while (e.MoveNext()) {
            V v = (V)(T)e.Current;
            执行A
        }
    }
    finally {
        ... // Dispose e
    }
}

根据x的不同,其中的类型C和finally中的Dispose过程也会不同,这是比较复杂的过程,在此不过多说明了。

相关文章

  • C# Learning:迭代语句

    关于如何使用break语句,continue语句等对迭代语句进行控制请见我的另一篇文章《C# Learning:跳...

  • C# 语句控制

    C# 语句控制 1 选择语句 1.1 if语句 1.2 switch语句 2 迭代语句 2.1 while语句 2...

  • C# Learning:选择语句

    if 语句(if-else) if语句根据bool值来识别运行哪个语句。if语句基本形式如下: 其中M是一个boo...

  • C# Learning:跳转语句

    throw语句和yield语句也可以算作跳转语句,但前者也可以归为异常处理语句,届时再谈;后者相对复杂,可以在学习...

  • [JS-4] JavaScript 循环与迭代

    迭代与循环 for 语句 do...while 语句 while 语句 label 语句 break 语句 con...

  • C#的循环

    c#循环结构 while语句while语句的语法格式为: while(表达式) {语句块}while语句的执行过程...

  • JavaScript中的各种迭代

    最近的迭代方式甚多,老夫好累。 语句迭代 下述都是语句,所以可以在其中使用break,continue。 for ...

  • 控制流:迭代循环(for)

    控制流:迭代循环(for) 什么是迭代循环 迭代循环语句 Python语言中的for语句实现了循环结构的 第一种循...

  • c# 学习笔记3

    条件判断 C# 中 switch 语句的语法: switch 语句必须遵循下面的规则: switch 语句中的 e...

  • Python基础语法了解一下(三)

    条件循环语句 Conditional Loop Statement 迭代循环语句 Iterative Loop ...

网友评论

    本文标题:C# Learning:迭代语句

    本文链接:https://www.haomeiwen.com/subject/xdlouhtx.html