AspNet goto 语句

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

goto 语句 可以无条件转移到程序中的标签指定的位置,由标识符加上冒号构成,语法如下:
  1. goto 标签名;
  2. 代码块1;
  3. 标签名:
  4. 代码块2;
复制代码
例子:
  1.         /// <summary>
  2.         /// 例子:使用goto
  3.         /// </summary>
  4.         static void Simple1()
  5.         {
  6.         loop:
  7.             var num = new Random().Next(0, 10);
  8.             Console.WriteLine($"num:{num}");
  9.             if (num % 2 == 0)
  10.                 //  如果是偶数,则跳过中间代码,直接运行 jump标签 后的代码
  11.                 goto jump;
  12.             Console.WriteLine("==  Coding  ==");
  13.         jump: Console.WriteLine("Hello World!!!");
  14.             if (num % 2 != 0)
  15.             {
  16.                 Console.WriteLine();
  17.                 //  如果不是偶数,则运行 loop标签 后的代码
  18.                 goto loop;
  19.             }
  20.             Console.ReadLine();
  21.         }
复制代码
 
PS:

1.运行到标签名后面的代码【代码块2】就会执行,并不是只有跳转才会执行
2.跳转【goto】标签时,中间的代码不会被执行,标签名后的代码块会被执行一次,逻辑有问题容易形成死循环
  1.         /// <summary>
  2.         /// 例子:死循环
  3.         /// </summary>
  4.         static void SimpleEndlessLoop()
  5.         {
  6.         loop:
  7.             Console.WriteLine("Hello World!!!");
  8.             goto loop;
  9.             Console.ReadLine();
  10.         }
复制代码
3.标签名 必须和 goto 在同一起,无法跨方法和类

 4.goto 可以跳出循环,但不能跳入循环
  1.         /// <summary>
  2.         /// 例子:goto在循环中的使用
  3.         /// </summary>
  4.         static void SimpleFor()
  5.         {
  6.             for (int i = 0; i < 9; i++)
  7.             {
  8.                 Console.WriteLine($"i={i}");
  9.                 goto loop;
  10.             }
  11.         loop:
  12.             Console.WriteLine("Hello World!!!");
  13.             Console.ReadLine();
  14.         }
复制代码

5.goto 可以在switch中跳入别的case中
  1.         /// <summary>
  2.         /// 例子:goto在 switch 中的使用
  3.         /// </summary>
  4.         static void SimpleSwitch()
  5.         {
  6.             loop:
  7.             var num = new Random().Next(0, 10);
  8.             switch (num)
  9.             {
  10.                 case 1:
  11.                     Console.WriteLine("Hello World!!!");
  12.                     break;
  13.                 default:
  14.                     Console.WriteLine($"num={num}");
  15.                     //  goto 可以在switch中跳入别的case中
  16.                     if (num % 2 == 0) gotocase 1;
  17.                     break;
  18.             }
  19.             if (num % 2 != 0)
  20.             {
  21.                 Console.WriteLine();
  22.                 //  如果不是偶数,则运行 loop标签 后的代码
  23.                 goto loop;
  24.             }
  25.             Console.ReadLine();
  26.         }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表