为什么我的while循环会导致无限循环?

时间:2019-01-12 10:27:04

标签: c# loops while-loop

我有这段代码将根据用户输入的内容修改文本文件。正在检查choiceBack = = 1的do while循环不会导致无限循环。但是,检查idCheck是否为true的循环导致无限循环。为什么这样?

bool idCheck = customerList.Where(m => m.iID.Contains(cC.iID)).Any();

do
{
    if (idCheck == true)
    { 
        (Chunk of code)

        Console.Write("User updated!");
        int choiceBack2 = 0;
        do
        {
            Console.WriteLine();
            Console.WriteLine("1) Go Back");
            choiceBack2 = Convert.ToInt32(Console.ReadLine());


            if (choiceBack2 == 1)
            {
                baristaLoggedIn();
            }

            else
            {
                Console.WriteLine("Wrong option!");
            }
        } while (choiceBack2 != 1);
    }
    else
    {
        Console.Write("username doesn't exist ");
        Console.WriteLine();
        Console.Write("Enter ID: ");
    }
} while (idCheck != true);

3 个答案:

答案 0 :(得分:2)

一旦IdCheck == true,它将进入无限循环。因为您从不会在IdCheck语句if中更改if(IdCheck == true)。因此,您最高级别的do while实际上使循环无限。有时,您需要根据要实现的目的将IdCheck更改为false或删除do while

答案 1 :(得分:0)

为什么以下循环会最终运行?

var idCheck = false;

do
{
} while (!idCheck)

你现在看到了吗?

答案 2 :(得分:0)

您需要在else语句-“错误的选项”中中断循环。您可以通过在else语句中放入“ idCheck = false”来破坏它。