usar sirven significado reservadas reservada que programacion para palabras palabra lenguaje ejemplos como comandos c# .net continue

sirven - Cuándo usar la palabra clave ''continuar'' en C#



palabras reservadas en c# y su significado (10)

Recientemente, estaba pasando por un proyecto de código abierto y, aunque he estado desarrollando durante varios años en .NET, no había tropezado con la palabra clave " continue antes.

Pregunta: ¿Cuáles son algunas de las mejores prácticas o áreas que se beneficiarían con el uso de la palabra clave continue ? ¿Hay alguna razón por la que no la haya visto anteriormente?


¿Me he perdido algo por no usarlo?

Parece una pregunta extraña. Probablemente, usted sabe, mejor que nadie, si ha necesitado comenzar la próxima iteración de un ciclo antes de tiempo.


Básicamente, continue y break son mejores (pero a menudo solo disfrazadas) goto sentencias ...

Siempre que esté dentro de un bucle y sepa que todo lo que viene después del bucle debe omitirse y continuar con la siguiente iteración que podría usar continue ...

Como tales, deben usarse rara vez ... a veces hacen que el código sea muy legible y claro (si la alternativa sería varios niveles de anidamiento, por ejemplo) ... la mayoría de las veces agregan cierta confusión similar a goto .


Cuando no quiere salir del bucle, pero desea la siguiente iteración:

for (int i = 0; i < something; i++) { if (condition) continue; // expensive calculations, skip due to continue // or due to the condition above I don''t want to // run the following code stuff(); code(); }


Deberías usarlo con moderación.

Los bucles mejores (= más fáciles de leer) no usan break o continue , son un tipo de declaraciones goto estructuradas.

Dicho esto, 1 o incluso 2 declaraciones de ruptura / continuación no harán que un bucle sea ilegible, pero vale la pena dejar claro su uso y hacerlo simple.


La palabra clave continue se usa para omitir el resto del bloque de bucle y continuar. Por ejemplo:

for(int i = 0; i < 5; i++) { if(i == 3) continue; //Skip the rest of the block and continue the loop Console.WriteLine(i); }

Se imprimirá:

0 1 2 4


Lo usa para salir inmediatamente de la iteración del bucle actual y comenzar la siguiente, si corresponde.

foreach (var obj in list) { continue; var temp = ...; // this code will never execute }

Una continue normalmente está vinculada a una condición, y la condición generalmente se puede usar en lugar de la continue ;

foreach (var obj in list) { if (condition) continue; // code }

Simplemente podría ser escrito como

foreach (var obj in list) { if (!condition) { // code } }

continue vuelve más atractivo si puede tener varios niveles de lógica anidada dentro del bucle. Una continue lugar de anidar puede hacer que el código sea más legible. Por supuesto, refactorizar el bucle y los condicionales en métodos apropiados también haría que el bucle sea más legible.


Piense en ello como un "retorno", pero solo aplicable al contexto de un bucle. Un ejemplo común es una máquina de estado, repitiendo sobre todas las entradas disponibles.

while(!SomeQueue.Empty) { byte nextByte = SomeQueue.Dequeue(); switch State: { case A: if(nextByte == Condition) { State = B; } else { State = ParseError; } continue; case B: //Test nextByte State = C; continue; case C: //Test nextByte State = A; continue; case ParseError: //Do something for this condition State = A; continue; }


Previene la anidación profunda.

foreach(var element in collection) { doSomething(); doSomethingElse(); if (condition1) { action1(); action2(); if (condition2) { action3(); } } }

podría ser reescrito como

foreach(var element in collection) { doSomething(); doSomethingElse(); if (!condition1) { continue; } action1(); action2(); if (!condition2) { continue; } action3(); }

Si los bloques de código no son triviales sino verticalmente más grandes, el uso de continue puede mejorar la legibilidad del código. Obviamente, debe usarse con consideración, como cualquier otra construcción de lenguaje.


Supongo que por qué no lo has visto anteriormente es que continue es una especie de primo para goto , break y return temprano de las funciones. Y todos sabemos que Goto se considera dañino , por lo que muchos desarrolladores probablemente tienden a evitarlo.

Para mí, tiendo a usar continue cuando quiero limpiar un bucle donde puede haber algunos valores que no me importan. Si uso continue , puedo omitir esos valores sin incluir la lógica "importante" en mi bucle en un anidado if .

foreach (var v in GetSomeValues()) { if (ThisValueIsNotImportant(v)) continue; //Do important stuff with the value. }


También puede utilizar la instrucción continue para la optimización del código. cuando esté seguro de que fuera de todas las condiciones, casi una condición se va a cumplir. Puedes usarlo como a continuación,

foreach (var element in List) { if (condition1) { //do stuff ..... continue; } if (condition2) { //do stuff .... continue; } . . . if (condition) { //do stuff .... continue; } }

Aquí, cuando se cumple alguna de las condiciones de la declaración If, el resto de las instrucciones se omitirán.