Мне трудно понять, как выйти из цикла, содержащего оператор switch. Разрыв выходит из переключателя, а не из цикла.
Возможно, это более элегантное решение. Я реализовал флаг, который начинается как истинный и получает значение false и завершает цикл. Можете ли вы предложить лучшее решение?
Фон: этот код используется в системе документооборота штрих-кода. У нас есть карманные компьютеры, в которых встроены сканеры штрих-кода. Этот код используется в одной из этих функций. Он запрашивает у пользователя разные данные во время процедуры. Эта часть позволяет им прокручивать некоторые записи инвентаря, отображающие эту информацию на терминале PocketPC (выгружаемые результаты) и позволяет им вводить "D" для "Готово", "Q", чтобы выйти.
Вот текущий пример С#, который необходимо улучшить:
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
Спасибо,