2009-05-06 16 views
21

Esiste un VB6 equivalente al C/C++ 'continuare' parola chiave?C/C++ 'continuare' equivalente in VB6

In C/C++, il comando 'continue' avvia la successiva iterazione del ciclo.

Naturalmente, esistono altri equivalenti. Potrei inserire il codice rimanente del ciclo in un'istruzione if. In alternativa, potrei usare un goto. (Uffa!)

risposta

19

Non c'è un equivalente in VB6, ma le versioni successive di VB introducono questa parola chiave. Questo articolo ha una spiegazione più approfondita: http://vbnotebookfor.net/2007/06/04/the-continue-statement/

Forse è possibile ristrutturare il codice per aggiungere un'istruzione if o fare in modo che il ciclo richiami una funzione da cui si può tornare.

2

Io un idiota: P grazie MarkJ

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

Non solo dispiaciuto per .net. Penso che devi usare goto, so che sembra 'più pulito' usare un continuo, ma non c'è nulla di sbagliato nell'andare se route.

sbagliato.

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

corretto

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

odio vb

+1

L'etichetta è nel posto sbagliato. Questo riavvierebbe il ciclo da 1 ogni volta: ciclo infinito. Secondo me è meglio metterlo appena prima del prossimo. In effetti hai un caso serio di codice aereo;) Hai incluso "As Integer" nell'istruzione VB6 For, che non è VB6 valido, e hai usato i e index per il nome della variabile in sia il tuo VB.NET che il tuo VB6. – MarkJ

+0

Apparentemente non ha avuto accesso a VBA6 (Office 2010). –

+0

L'uso di goto per simulare un continuo è un buon esempio di programmazione di IN in una lingua anziché solo in essa, come direbbe Steve McConnell. –

6

Purtroppo non c'è continuare se VB6 (?) - questo era nuovo in VB 2005 credo.

Non avrei sempre paura delle istruzioni goto: è effettivamente ciò che continua è, ma senza la necessità di una riga etichettata dopo il ciclo. Finché le tue istruzioni goto non salteranno molto lontano, saranno sempre leggibili, ed è probabilmente la soluzione più elegante a questo problema.

L'annidamento di un altro if/then/else all'interno di un ciclo for è in realtà HARDER da leggere e gestire più avanti di un semplice semplice goto (con un commento sulla linea goto che dice qualcosa come "'read as Continue For").

Buona fortuna!

+1

In altre parole, "goto è considerato dannoso solo se non ci sono alternative migliori". Un sentimento che condivido completamente. (Nelle prime versioni di BASIC un ciclo "while" è stato costruito con IF-THEN-GOTO, e non era così male finché i loop non erano troppo grandi.) –

6

VB6 non ha istruzioni continue per i loop. Devi emularlo usando goto, if o un altro ciclo.

//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 

Non è possibile utilizzare "uscita mentre" in VB6. Ma puoi usare goto.

While condition 

    if should_skip then goto mycontinue 

    'code 

    if should_break then goto outloop 

    mycontinue: 

Wend 

outloop: