Usted quiere:
foreach (int number in numbers) // <--- go back to here --------+
{ // |
if (number < 0) // |
{ // |
continue; // Skip the remainder of this iteration. -----+
}
// do work
}
Aquí hay más sobre la continuepalabra clave .
Actualización: en respuesta a la pregunta de seguimiento de Brian en los comentarios:
¿Podría aclarar más qué haría si hubiera anidado los bucles y quisiera omitir la iteración de uno de los extendidos?
for (int[] numbers in numberarrays) {
for (int number in numbers) { // What to do if I want to
// jump the (numbers/numberarrays)?
}
}
A continuesiempre se aplica al alcance envolvente más cercano, por lo que no podría usarlo para salir del bucle más externo. Si surge una condición como esa, necesitaría hacer algo más complicado dependiendo exactamente de lo que desea, como breakdel bucle interno y luego continuedel bucle externo. Consulte aquí la documentación sobre la breakpalabra clave . La breakpalabra clave C # es similar a la lastpalabra clave Perl .
Además, considere tomar la sugerencia de Dustin para simplemente filtrar los valores que no desea procesar de antemano:
foreach (var basket in baskets.Where(b => b.IsOpen())) {
foreach (var fruit in basket.Where(f => f.IsTasty())) {
cuteAnimal.Eat(fruit); // Om nom nom. You don't need to break/continue
// since all the fruits that reach this point are
// in available baskets and tasty.
}
}