我无法摆脱代码中的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();
}
}
}
答案 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
关键字完全退出该功能。