• C#拾遗补漏之goto跳转语句


    前言

    在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。

    goto语句介绍

    • goto 语句由关键字 goto 后跟一个标签名称组成,通过标签名称指定跳转的位置。

    • 可以在方法的任何地方放置标签,并且可以多次使用相同的标签。

    goto代码使用示例

    使用goto进行代码重试示例

    1.         /// <summary>
    2.         /// 使用goto进行代码重试示例
    3.         /// </summary>
    4.         public static void GotoRetryUseExample()
    5.         {
    6.             int retryCount = 0;
    7.             for (int i = 0; i < 10; i++)
    8.             {
    9.             retryLogic:
    10.                 try
    11.                 {
    12.                     //模拟可能出错的操作
    13.                     Random random = new Random();
    14.                     int result = random.Next(02);
    15.                     if (result == 0)
    16.                     {
    17.                         throw new Exception("Error occurred");
    18.                     }
    19.                     Console.WriteLine("Operation successful on attempt: " + retryCount);
    20.                 }
    21.                 catch (Exception ex)
    22.                 {
    23.                     retryCount++;
    24.                     if (retryCount < 3)
    25.                     {
    26.                         Console.WriteLine("Error occurred, retrying...");
    27.                         goto retryLogic; //跳转到重试逻辑
    28.                     }
    29.                     else
    30.                     {
    31.                         Console.WriteLine("Max retry limit reached.");
    32.                         return;
    33.                     }
    34.                 }
    35.             }
    36.         }

    不使用goto进行代码重试示例

    1.         /// <summary>
    2.         /// 不使用goto进行代码重试示例
    3.         /// </summary>
    4.         public static void NonGotoRetryUseExample()
    5.         {
    6.             int retryCount = 0;
    7.             for (int i = 0; i < 10; i++)
    8.             {
    9.                 while (retryCount < 3)
    10.                 {
    11.                     try
    12.                     {
    13.                         //模拟可能出错的操作
    14.                         Random random = new Random();
    15.                         int result = random.Next(02);
    16.                         if (result == 0)
    17.                         {
    18.                             throw new Exception("Error occurred");
    19.                         }
    20.                         Console.WriteLine("Operation successful on attempt: " + retryCount);
    21.                         break;
    22.                     }
    23.                     catch (Exception ex)
    24.                     {
    25.                         retryCount++;
    26.                         Console.WriteLine("Error occurred, retrying...");
    27.                     }
    28.                 }
    29.                 if (retryCount == 3)
    30.                 {
    31.                     Console.WriteLine("Max retry limit reached.");
    32.                     return;
    33.                 }
    34.             }
    35.         }

    goto正常输出使用示例

    1.         /// <summary>
    2.         /// goto正常输出使用示例
    3.         /// </summary>
    4.         public static void GotoGeneralUseExample(int num)
    5.         {
    6.             if (num < 0)
    7.             {
    8.                 goto LessThanZero;
    9.             }
    10.             else if (num == 0)
    11.             {
    12.                 goto EqualToZero;
    13.             }
    14.             else
    15.             {
    16.                 goto GreaterThanZero;
    17.             }
    18.         LessThanZero:
    19.             Console.WriteLine("数字小于零");
    20.             goto End;
    21.         EqualToZero:
    22.             Console.WriteLine("数字等于零");
    23.             goto End;
    24.         GreaterThanZero:
    25.             Console.WriteLine("数字大于零");
    26.             goto End;
    27.         End:
    28.             Console.WriteLine("End...");
    29.         }

    不使用goto正常输出使用示例

    1.         /// <summary>
    2.         /// 不使用goto正常输出使用示例
    3.         /// </summary>
    4.         public static void NonGotoGeneralUseExample(int num)
    5.         {
    6.             if (num < 0)
    7.             {
    8.                 Console.WriteLine("数字小于零");
    9.             }
    10.             else if (num == 0)
    11.             {
    12.                 Console.WriteLine("数字等于零");
    13.             }
    14.             else
    15.             {
    16.                 Console.WriteLine("数字大于零");
    17.             }
    18.             Console.WriteLine("End...");
    19.         }

    goto语句的优缺点

    通过上述代码示例我们可以总结如下goto语句的几大优缺点,大家可以根据自己的使用场景谨慎合理的使用。

    优点:

    1. 简化复杂逻辑: 在某些情况下,goto 可以帮助简化复杂的逻辑流程,减少嵌套结构。

    2. 跳出多层循环: 可以用于直接跳出多层循环,避免使用额外的标志变量。

    缺点:

    1. 降低可读性: 过度使用 goto 可能会导致代码难以理解,降低代码的可读性。

    2. 增加维护难度: goto 可能使代码结构复杂化,增加代码的维护难度。

    3. 潜在引入bug: 不当使用 goto 可能会引入潜在的错误,打破正常的控制流程。

  • 相关阅读:
    提升效率:PostgreSQL准确且快速的数据对比方法
    中文分词:Python、Golang、Java
    将顺序表非零元素依次移到表的前端
    一个后端项目调用另一个后端项目的接口获取数据
    Windows11 WSL2 Ubuntu编译安装perf工具
    计算机网络——物理层(信道复用)
    消息队列系列5 - RabbitMQ安装与测试 (荣耀典藏版)
    Ubuntu16.04编译测试LVI_SAM过程
    OpenFOAM类库介绍(四)对流项
    [附源码]计算机毕业设计JAVA基于web的电子产品网络购物平台
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/136492545