打破一个包含switch语句while循环的出 [英] Break out of a while loop that contains a switch statement
问题描述
我有麻烦搞清楚如何突破包含switch语句的循环。 break中断开关,而不是循环。
I am having trouble figuring out how to break out of a loop that contains a switch statement. Break breaks out of the switch, not the loop.
有可能是一个更优雅的解决了这一点。我已经实现了开始时的真实,被设置为false,结束循环的标志。你能提供一个更好的解决方案?
There is probably a more elegant solution to this. I have implemented a flag that starts out as true and gets set to false and ends the loop. Can you offer a better solution?
背景:这code在酒吧code的工作流系统中使用。我们有内置了吧code扫描仪PocketPC之间。这code在这些功能中的一个应用。它提示不同的数据块在整个例程的用户。这片让他们通过一些库存记录显示在PocketPC终端(分页的结果)上滚动的信息,并允许他们进入D完蛋了,Q退出。
Background: this code is used in a bar code workflow system. We have PocketPCs that have bar code scanners built in. This code is used in one of those functions. It prompts the user for different pieces of data throughout the routine. This piece allows them to scroll through some inventory records displaying that info on the PocketPC terminal (paged results) and allows them to enter "D" for Done, "Q" to quit.
下面是需要改进当前的C#示例:
Here is the current C# example that needs to be improved:
do
{
switch (MLTWatcherTCPIP.Get().ToUpper())
{
case "": //scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "P": //scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "D": //DONE (exit out of this Do Loop)
// break; // this breaks out of the switch, not the loop
// return; // this exists entire method; not what I'm after
keepOnLooping = false;
break;
case "Q": //QUIT (exit out to main menu)
return;
default:
break;
}
} while (keepOnLooping);
下面是这是否在VB.NET code的例子
Here is an example of code that does this in VB.NET
Do
Select Case MLTWatcherTCPIP.Get().ToUpper
Case "" ''#scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown()
Case "P" ''#scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextUp()
Case "D" ''#DONE (exit out of this Do Loop)
Exit Do
Case "Q" ''#QUIT (exit out to main menu)
Return
End Select
Loop
谢谢,
推荐答案
我觉得这种形式是有史以来所以,稍微更具可读性:
I find this form to be ever-so-slightly more readable:
bool done = false;
while (!done)
{
switch (MLTWatcherTCPIP.Get().ToUpper())
{
case "": //scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "P": //scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "D": //DONE (exit out of this Do Loop)
done = true;
break;
case "Q": //QUIT (exit out to main menu)
return;
default:
break;
}
}
这篇关于打破一个包含switch语句while循环的出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!