Мне трудно понять, как выйти из цикла, содержащего оператор 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
Спасибо,