离开While Loop?

时间:2012-02-19 16:19:03

标签: c#

我无法摆脱代码中的While循环以及方法之外的问题。用户可以选择输入1或2和0来取消(退出菜单和方法)。但是现在代码是,我想Switch中的默认选项会阻止它离开While循环!?我可以用另一种更好的方式做到吗?

        // Read user input
    public void ReadUserInput()
    {
        Console.Write("Your choice? ");
        int choice = -1;
        while (choice != 0)
        {
            if (int.TryParse(Console.ReadLine(), out choice))
            {
            switch (choice)
            {
                case 1:           
                    ShowSchedule(1);
                    break;

                case 2:
                    ShowSchedule(2);
                    break;

                default:
                    ErrorMessage(); // Call method to show error message
                    ReadUserInput(); // Call method for new input
                    break;      
            }
            }
            else
            {
                // Call method to show error message
                ErrorMessage();
                Start();
            }
        }
    }

4 个答案:

答案 0 :(得分:3)

只需添加一个

case 0:
    break;

如果用户输入0则退出循环。如果确实没有代码应该在方法循环之后运行,你也可以直接从它返回

case 0:
    return;

答案 1 :(得分:3)

如果您想要暂停swicth while,请在此处使用return关键字:

while (choice != 0)
{
    if (int.TryParse(Console.ReadLine(), out choice))
    {
       switch (choice)
       {
            case 0:
               return; //returns from the FUNCTION! So from the switch AND while
            ....

            ....

            ....
       }
    }
}

答案 2 :(得分:1)

只需将初始Console.Write()放入循环中,不要递归调用ReadUserInput()

答案 3 :(得分:0)

您可以使用return关键字完全退出该功能。