C#标签给出迭代

C# label gives an iteration

我几天前才开始学习 C#。当学习 goto 语句时,我找到了这样的例子。

        ineligible:
            Console.WriteLine("Not eligible for voting");

            Console.WriteLine("Enter your age");
            int age = int.Parse(Console.ReadLine());


            if (age < 18)
            {
                goto ineligible;
            }
            else
            {
                Console.WriteLine("Voting request accepted");
            }

然后,我把代码改成了这样。

            int age = int.Parse(Console.ReadLine());

        ineligible:
            Console.WriteLine("Not eligible for voting");

            if (age < 18)
            {
                goto ineligible;
            }
            else
            {
                Console.WriteLine("Voting request accepted");
            }

我得到了无限迭代没有资格投票。 Image of the iteration

为什么发生迭代而不是只打印一次不合格

参考:javatpoint - C#(goto statement)

你不应该在生活中的任何地方使用它。看完这个改代码,试一次,学了就忘了。

为什么你的第一个案例成功了?

因为你有 Console.Readline() 所以它会等待你的回应。

ineligible:
        Console.WriteLine("Not eligible for voting");

        Console.WriteLine("Enter your age");
        int age = int.Parse(Console.ReadLine());


        if (age < 18)
        {
            goto ineligible;
        }

为什么第二种情况会导致无限循环?

因为您在 Console.ReadLine() 声明的下方带来了不合格的:

int age = int.Parse(Console.ReadLine());

        ineligible:
            Console.WriteLine("Not eligible for voting");

所以循环将永远存在,它不会期待您的输入或干扰。

再学一遍算了。