switchステートメントを含むループから抜け出す方法を理解するのに問題があります。ブレークは、ループではなく、スイッチからブレークアウトします。
これにはおそらくもっとエレガントな解決策があります。trueで始まり、falseに設定され、ループを終了するフラグを実装しました。より良い解決策を提供できますか?
背景:このコードは、バーコードワークフローシステムで使用されます。バーコードスキャナーが組み込まれたPocketPCがあります。このコードは、これらの機能の1つで使用されます。ルーチン全体でさまざまなデータの入力をユーザーに求めます。このピースを使用すると、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
ありがとう、