【发布时间】:2010-12-31 12:54:01
【问题描述】:
我无法弄清楚如何跳出包含 switch 语句的循环。 Break 是从开关中跳出来的,而不是循环中的。
对此可能有更优雅的解决方案。我已经实现了一个标志,该标志以 true 开头并设置为 false 并结束循环。您能提供更好的解决方案吗?
背景:此代码用于条码工作流系统。我们有内置条形码扫描仪的 PocketPC。此代码用于其中一项功能。它在整个例程中提示用户输入不同的数据。这部分允许他们滚动浏览在 PocketPC 终端上显示该信息的一些库存记录(分页结果),并允许他们输入“D”表示完成,“Q”表示退出。
这是当前需要改进的 C# 示例:
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 中执行此操作的代码示例
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
谢谢,
【问题讨论】:
-
这对我来说很好,标志变量是检查循环条件的标准方法。
-
在 Java(和其他一些)中,标记循环并使用 labelled break 将是最直接的答案。
标签: c# while-loop break