Brechen Sie eine while-Schleife ab, die eine switch-Anweisung enthält

Ich habe Probleme, herauszufinden, wie ich aus einer Schleife ausbrechen kann, die eine switch-Anweisung enthält. Break bricht aus dem Schalter aus, nicht aus der Schleife.

Hierfür gibt es wahrscheinlich eine elegantere Lösung. Ich habe ein Flag implementiert, das mit true beginnt, auf false gesetzt wird und die Schleife beendet. Können Sie eine bessere Lösung anbieten?

Hintergrund: Dieser Code wird in einem Barcode-Workflow-System verwendet. Wir haben PocketPCs mit eingebauten Barcodescannern. Dieser Code wird in einer dieser Funktionen verwendet. Der Benutzer wird während der gesamten Routine zur Eingabe verschiedener Daten aufgefordert. Mit diesem Teil können sie durch einige Inventardatensätze blättern, in denen diese Informationen auf dem PocketPC-Terminal angezeigt werden (Seitenergebnisse), und für Fertig "D" eingeben, um den Vorgang zu beenden.

Hier ist das aktuelle C # -Beispiel, das verbessert werden muss:

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);

Hier ist ein Beispiel für Code, der dies in VB.NET ausführt

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

Vielen Dank,

Antworten auf die Frage(15)

Ihre Antwort auf die Frage