美文网首页dotNETcsharp
C# Learning:跳转语句

C# Learning:跳转语句

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

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

break

break语句可以配合迭代语句使用,终止其所在的最接近的循环,或配合switch语句使用,以离开switch语句。关于离开switch语句,可以见我的另一篇文章《C# Learning:选择语句》
所谓其所在的最接近的循环,官方文档原文为“the closest enclosing loop”。这是在循环嵌套的时候需要的一个说明。也就是说按照如下代码:

for(; ; ) // 循环A
{
    while(true) // 循环B
    {
        break;
    }
}

break将跳出更接近它的循环B,而不是跳出循环A;而如下代码:

for(; ; ) // 循环A
{
    while(true) ; // 循环B
    break;
}

此处break将跳出循环A(如果能执行到的话),因为它不在循环B内。
在使用break跳出for循环时,for循环的第三项不会被执行。也就是说如下代码将:

A
for(B; C; D)
{
    E
    break;
}
F

依次执行A、B、C(并判断)、E、F。同时此时Visual Studio会产生一个警告,说D不会被执行。

continue

continue语句只能配合迭代语句使用,进入下一次迭代。
continue语句不会导致迭代语句的条件部分(如for循环的第二项)失效,也不会使for循环的第三项失效,也就是说:

for (int i = 0; i < 1; i++)
{
    Console.WriteLine(i);
    continue;
}

此段代码之会打印出一行0。

goto

goto语句需要配合标记使用,可以直接把控制权传向某个标记。
一般来说goto被用来传递至某个switch语句中的某个标签,或者是跳出深嵌套循环。比如:

string str = Console.ReadLine();
switch(str)
{
    case "Hello!":
        Console.WriteLine("Hi!");
        goto case "What's your name?";

    case "What's your name?":
        Console.WriteLine("My name is ROBOT. How about you?");
        break;
}


for (; ; )
    while (true)
        do { goto End; } while (true);
End:
;

上方代码演示了跳转到switch语句中的某个标签;而下方的代码演示了跳出多重循环,以及若某个标签后没有语句的处理方式(使用空语句“;”)。此时若输入“Hello!”,则会输出:

Hi!
My name is ROBOT. How about you?

return

return语句用于退出一个方法并给予返回值。方法返回后将控制权转入调用方。

int MethodA()
{
    return MethodB() + 1;
}
int MethodB()
{
    return MethodC() + 1;
}
int MethodC()
{
    return 0;
}

如果方法返回值类型不为void,在所有分支都必须有return语句(或者throw语句),从而提供一个返回值。如果方法返回值类型为void,return语句则是可选的,且其后不需要也不可以跟上任何的值。如:

int MethodA(int a)
{
    if(a >= 0)
    {
        return a;
    }
    // 这个分支(a小于0)没有提供返回值,将引发一个编译错误。
}
void MethodB()
{
    // 这不会引发错误。
}
void MethodC()
{
    return false; // 这同样会引发错误,因为返回类型不匹配(这里不该有返回值)。
}
void MethodD()
{
    return; // 这不会引发错误。
}

相关文章

  • C# Learning:跳转语句

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

  • C# Learning:迭代语句

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

  • C# Learning:选择语句

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

  • Golang入门四:流程控制

    条件语句 选择语句 循环语句 跳转语句goto

  • C# 语句控制

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

  • 08-Go语言循环语句

    for循环语句 Go语言中只有一个for循环语句 四大跳转 break跳转 continue跳转

  • 跳转语句(break、continue)

    1、跳转语句用于实现循环执行过程中程序流程的跳转,在Java中跳转语句有break和continue语句。 2、b...

  • Java学习经验与总结(04)——控制跳转语句及方法

    一 控制跳转语句 控制跳转语句的概念 控制跳转语句,是在程序进行到某一步时,想要结束或者中断这个循环,用程序跳转语...

  • C#页面跳转的几种方式

    C#页面跳转的几种方式 方式一 html中不带参数跳转:带参数跳转: 方式二 js控制页面跳转带参数和不带参数 方...

  • C#的循环

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

网友评论

    本文标题:C# Learning:跳转语句

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