C / C ++ «продолжить» эквивалент в VB6 - PullRequest
22 голосов
/ 06 мая 2009

Есть ли VB6, эквивалентный ключевому слову "continue" в C / C ++?

В C / C ++ команда continue продолжает следующую итерацию цикла.

Конечно, существуют другие эквиваленты. Я мог бы поместить оставшийся код цикла в оператор if. В качестве альтернативы я мог бы использовать goto. (Тьфу!)

Ответы [ 4 ]

20 голосов
/ 06 мая 2009

В VB6 нет эквивалента, но более поздние версии VB вводят это ключевое слово. Эта статья имеет более глубокое объяснение: http://vbnotebookfor.net/2007/06/04/the-continue-statement/

Возможно, вы можете реструктурировать свой код, чтобы добавить оператор if или сделать цикл, просто вызвав функцию, из которой вы можете вернуться.

7 голосов
/ 06 мая 2009

VB6 не имеет оператора continue для циклов. Вы должны эмулировать его, используя goto, if или другой цикл.

//VB.net
do
    if condition then continue do
    ...
loop
//VB6 equivalent (goto)
do
    if condition then goto continue_do
    ...
continue_do:
loop
//VB6 equivalent (if)
do
    if not condition then
        ...
    endif
loop

Вы не можете использовать "exit while" в VB6. Но вы можете использовать goto.

While condition

    if should_skip then goto mycontinue

    'code

    if should_break then goto outloop

   mycontinue:

Wend

outloop:
6 голосов
/ 06 мая 2009

К сожалению, нет продолжения, если VB6 - это было новым в VB 2005, я считаю.

Я бы не всегда боялся операторов goto - это фактически то, что такое Continue, но без необходимости иметь помеченную строку после цикла. Пока ваши операторы goto не слишком далеко прыгают, они всегда будут читабельными, и это, вероятно, самое элегантное решение этой проблемы.

Вложение другого if / then / else внутри цикла for на самом деле труднее читать и поддерживать позже, чем хорошее простое goto (с комментарием к строке goto, говорящим что-то вроде "'read as Continue For").

Удачи!

2 голосов
/ 06 мая 2009

Я идиот: P спасибо MarkJ

   For index As Integer = 1 To 10
        If  index=9 Then
            Continue For
        End If
   'some cool code'
    Next

Нет, прости только за .net. Я думаю, что вы должны использовать goto, я знаю, что для продолжения маршрут выглядит «чище», но нет ничего плохого в прохождении маршрута if.

неправильно.

 Continue:
     For index As Integer = 1 To 10
                If index=9 Then
                  GoTo Continue
                End If
    'some cool code'
     Next

исправлен (?)

     For index = 1 To 10
      If index=9 Then
       GoTo Continue 
      End If    
    'some cool code'
Continue:
     Next

ненавижу vb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...