2009-05-06 10 views
21

¿Hay un VB6 equivalente a la palabra clave 'continuar' de C/C++?C/C++ 'continuar' Equivalente en VB6

En C/C++, el comando 'continuar' inicia la siguiente iteración del ciclo.

Por supuesto, existen otros equivalentes. Podría poner el código restante del ciclo en una instrucción if. Alternativamente, podría usar un goto. (Uf!)

Respuesta

19

No hay equivalente en VB6, pero las versiones posteriores de VB introducen esta palabra clave. Este artículo tiene una explicación más detallada: http://vbnotebookfor.net/2007/06/04/the-continue-statement/

Quizás pueda reestructurar su código para agregar una instrucción if o hacer que el bucle solo llame a una función que puede devolver.

2

soy un idiota: P gracias MarkJ

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

No siento sólo para .NET. Creo que tienes que usar goto, sé que parece 'más limpio' para continuar, pero no hay nada de malo en seguir la ruta if.

mal.

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

corregido

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

odio vb

+1

Su etiqueta está en el lugar equivocado. Eso reiniciaría el bucle de 1 cada vez: bucle infinito. En mi opinión, es mejor ponerlo justo antes del Siguiente. De hecho, tiene un caso grave de código de aire;) Ha incluido el "Como entero" en la declaración VB6 For, que no es VB6 válido, y ha utilizado i e indexado para el nombre de la variable en tanto tu VB.NET como tu VB6. – MarkJ

+0

Al parecer, tampoco entró en VBA6 (Office 2010). –

+0

El uso de goto para simular un continuar es un buen ejemplo de programación IN a un idioma en lugar de solo en él, como diría Steve McConnell. –

6

Lamentablemente no hay ninguna continuar si VB6 (?) - esto era nuevo en VB 2005 creo.

No siempre tendré miedo a las declaraciones goto: eso es lo que continúa, pero sin la necesidad de una línea etiquetada después del ciclo. Siempre y cuando sus declaraciones goto no salgan muy lejos, siempre serán legibles, y es probablemente la solución más elegante a este problema.

Anidar otro if/then/else dentro de un bucle for es realmente MÁS DIFÍCIL de leer y mantener después de un buen goto simple (con un comentario en la línea goto que dice algo así como "'leer como Continuar").

¡Buena suerte!

+1

En otras palabras, "goto solo se considera perjudicial cuando no hay mejores alternativas". Un sentimiento con el que estoy de acuerdo por completo. (En las primeras versiones de BASIC, se construía un ciclo "while" con IF-THEN-GOTO, y no era tan malo, siempre y cuando tus loops no fueran demasiado grandes). –

6

VB6 no tiene una declaración continua para los bucles. Tienes que emularlo usando goto, if u otro 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 

No puede usar "exit while" en VB6. Pero puedes usar goto.

While condition 

    if should_skip then goto mycontinue 

    'code 

    if should_break then goto outloop 

    mycontinue: 

Wend 

outloop: