none
C# 中使用goto的问题 RRS feed

  • 问题

  •  static void Main(string[] args)
            {

                Action act1 = () =>
                {
                    Console.WriteLine("执行方法1");
                };

                Action act2 = () =>
                {
                    Console.WriteLine("执行方法2");
                };

            exec1: act1();
            exec2: act2();

                int i = 0;
                while (i < 50)
                {
                    i = i + 1;
                    Console.WriteLine(i);
                    if (i % 2 == 0)
                        goto exec1;
                    else
                        goto exec2;

                } 

                Console.ReadLine();
            }

    这段代码中为什么死循环了,最终i始终为1,导致无法跳出循环,这是为什么呢?

    2018年3月8日 9:06

全部回复

  • int i = 0;  因为这一句导致的死循环,i的值每次经过while运算之后,又回到这里归于0,继续进行while运算
      while (i < 50)

    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年3月9日 0:48
  • Hi,

    欢迎在MSDN论坛发帖。

    修改下面的代码:

          int i = 0;
            exec1: act1();
            exec2: act2();
    

    如果你的问题得到解决,请及时标记有用的回复作为答案,这样会帮助遇到相同问题的人。

    iBest Regards,

    Hart


    MSDN Community Support Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年3月9日 2:43
    版主