C# метка дает итерацию - PullRequest
0 голосов
/ 29 мая 2020

Я только начал учить C# пару дней go. Когда пришел выучить инструкцию 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");
            }

и получил бесконечная итерация Голосование не допускается . Изображение итерации

Почему итерация произошла вместо печати Не допущено только один раз?

Ссылка: javatpoint - C# (инструкция goto)

1 Ответ

0 голосов
/ 29 мая 2020

Вы не должны использовать это нигде в своей жизни. Прочитав это, измените код, попробуйте один раз, изучите его, а затем забудьте.

Почему ваш первый случай сработал?

Потому что у вас есть 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;
        }

Почему второй случай приводит к бесконечному l oop?

Потому что вы внесли непригодный: чуть ниже в Консоль. Оператор ReadLine ().

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

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

Таким образом, l oop будет вечным, и он не будет ожидать вашего ввода или вмешательства.

Снова изучите его и забудьте об этом.

...