goto 语句 可以无条件转移到程序中的标签指定的位置,由标识符加上冒号构成,语法如下:
例子:
- /// <summary>
- /// 例子:使用goto
- /// </summary>
- static void Simple1()
- {
- loop:
- var num = new Random().Next(0, 10);
- Console.WriteLine($"num:{num}");
- if (num % 2 == 0)
- // 如果是偶数,则跳过中间代码,直接运行 jump标签 后的代码
- goto jump;
- Console.WriteLine("== Coding ==");
- jump: Console.WriteLine("Hello World!!!");
- if (num % 2 != 0)
- {
- Console.WriteLine();
- // 如果不是偶数,则运行 loop标签 后的代码
- goto loop;
- }
- Console.ReadLine();
- }
复制代码
PS:
1.运行到标签名后面的代码【代码块2】就会执行,并不是只有跳转才会执行
2.跳转【goto】标签时,中间的代码不会被执行,标签名后的代码块会被执行一次,逻辑有问题容易形成死循环- /// <summary>
- /// 例子:死循环
- /// </summary>
- static void SimpleEndlessLoop()
- {
- loop:
- Console.WriteLine("Hello World!!!");
- goto loop;
- Console.ReadLine();
- }
复制代码 3.标签名 必须和 goto 在同一起,无法跨方法和类

4.goto 可以跳出循环,但不能跳入循环- /// <summary>
- /// 例子:goto在循环中的使用
- /// </summary>
- static void SimpleFor()
- {
- for (int i = 0; i < 9; i++)
- {
- Console.WriteLine($"i={i}");
- goto loop;
- }
- loop:
- Console.WriteLine("Hello World!!!");
- Console.ReadLine();
- }
复制代码
5.goto 可以在switch中跳入别的case中- /// <summary>
- /// 例子:goto在 switch 中的使用
- /// </summary>
- static void SimpleSwitch()
- {
- loop:
- var num = new Random().Next(0, 10);
- switch (num)
- {
- case 1:
- Console.WriteLine("Hello World!!!");
- break;
- default:
- Console.WriteLine($"num={num}");
- // goto 可以在switch中跳入别的case中
- if (num % 2 == 0) gotocase 1;
- break;
- }
- if (num % 2 != 0)
- {
- Console.WriteLine();
- // 如果不是偶数,则运行 loop标签 后的代码
- goto loop;
- }
- Console.ReadLine();
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |