C# Goto 语句

2025年4月24日 | 阅读 6 分钟

在 C# 中,Goto 语句也被称为跳转语句。它用于将控制权转移到程序的另一部分。它会无条件地跳转到指定的标签。goto 语句可用于将控制权从深层嵌套的 switch case 标签或循环中转移出来。

语法

它具有以下语法:

C# 中,goto 用于通过相同的方法跳转到带标签的语句。它通常用于跳转到代码中的特定位置。

Goto 语句的流程图

C# Goto Statement

正如我们在流程图中看到的,使用以下步骤来实现 C# Goto 语句:

第一步:程序从“开始”块启动。

第二步:它执行第一条语句。

第三步:随后,它测试一个条件,以确定是否应使用 goto 跳转到标签 2。

第四步:当调用 goto 时,控制权会直接跳到标签 2,绕过语句 1。

第五步:在另一种情况下,它会按顺序跳转到语句 1,然后是语句 2。

第六步:在执行完语句 2 后,路径继续到“结束”块。

C# Goto 语句示例

让我们看一个 C# 中 goto 语句的简单示例。

示例

编译并运行

输出

You are not eligible to vote!
Enter your age:
11
You are not eligible to vote!
Enter your age:
5
You are not eligible to vote!
Enter your age:
26
You are eligible to vote!

C# Goto 语句与 for 循环

在 C# 中,goto 语句将控制权转移到同一方法内的一个带标记的语句。虽然通常不建议这样做,因为它会降低代码的可读性,但在特定情况下,它可以用来跳出嵌套循环或绕过部分代码。

语法

它具有以下语法:

使用 for 循环的 C# Goto 语句示例

让我们举一个例子来说明 C# 中带有 for 循环的 Goto 语句。

示例

编译并运行

输出

1
2
3
4
5
Loop Terminated at 6

说明

在此示例中,for 循环遍历从 1 到 10 的数字。当 i 等于 6 时,执行 goto End; 指令,将控制权转移到 End: 标签。循环提前终止,并打印消息“循环在 6 处终止。”。

C# Goto 语句与 Switch 语句

在 C# 中,goto 语句可以在 switch 语句内部使用,以跳转到特定的 case 标签或 default 标签。当您需要将控制权从一个 case 转移到另一个 case 时,这很有用。

语法

它具有以下语法:

使用 Switch 语句的 C# Goto 语句示例

让我们举一个例子来说明 C# 中带有 switch 语句的 goto 语句。

示例

编译并运行

输出

Day number: 3
Wednesday
Friday
End of the program.

说明

在此示例中,switch 语句检查 day 的值,即 3。控制权进入 case 3 并输出“Wednesday”。之后,goto case 5; 指令直接跳转到 case 5。

之后,打印出“Friday”,然后控制权离开 switch 语句。最后,程序打印“程序结束。”。

C# Goto 与嵌套循环

在 C# 中,您可以在嵌套循环中使用 goto 关键字来同时跳出多个循环或转移到带标记的语句。如果您想在某些特定条件下一次性跳出所有循环,可以使用它。

语法

它具有以下语法:

使用嵌套循环的 C# Goto 语句示例

让我们举一个例子来说明 C# 中带有嵌套循环的 Goto 语句。

示例

编译并运行

输出

Checking students marks to find the target:
Checking marks of Alice: 85
Checking marks of Alice: 90
Checking marks of Alice: 78
Checking marks of Alice: 92
Checking marks of Alice: 88
Checking marks of Bob: 85
Checking marks of Bob: 90
Target student found: Bob with 90 marks!
Process completed.

说明

在此示例中,我们通过嵌套的 for-each 循环遍历一个学生列表。然后,它检查每个组合以查找分数为 90 的学生“Bob”。

一旦找到,它会显示一条消息,指示已找到目标,并使用 goto 语句同时跳出两个循环。最后,它显示“处理完成。”以表示执行结束。

结论

总之,C# 中的 goto 指令提供了一种将控制权直接传递到同一过程中的带标签语句的机制。虽然在某些特定情况下很有用,例如从深层嵌套的循环中跳出或设计有限状态机。但在其他情况下,它被认为是一种不良实践,因为它会使代码更难阅读和维护。

C# Goto 语句选择题

1. C# 中 goto 语句的主要用途是什么?

  1. 创建新变量
  2. 有条件地执行代码
  3. 将控制权转移到带标签的语句
  4. 定义一个方法

答案:c) 将控制权转移到带标签的语句


2. 为什么在 C# 中通常不鼓励使用 goto?

  1. 它会导致编译时错误
  2. 它会使代码更难阅读和维护
  3. 它会显著减慢程序速度
  4. 现代 C# 版本不支持它

答案:b) 它会使代码更难阅读和维护


3. 在带有嵌套循环的示例中,goto End; 做了什么?

  1. 跳出两个循环并跳转到带标签的语句
  2. 仅跳过内层循环
  3. 仅跳出外层循环
  4. 从头重新开始两个循环

答案:a) 跳出两个循环并跳转到带标签的语句


4. 以下哪项是 goto 语句的有效用法?

  1. 跳转到另一个类中的标签
  2. 向前和向后跳转到任何方法
  3. 自动重复循环
  4. 跳转到同一方法内的带标签的语句

答案:d) 跳转到同一方法内的带标签的语句


5. 当使用 goto 语句跳转到同一方法内的标签时会发生什么?

  1. 程序立即退出
  2. 程序崩溃
  3. 控制权无条件地跳转到该标签
  4. 方法从头开始重新执行

答案:c) 控制权无条件地跳转到该标签


下一个主题C# 注释