loop - ienumerable c# foreach
Saliendo del bucle foreach en C# (5)
foreach (var name in parent.names)
{
if name.lastname == null)
{
Violated = true;
this.message = "lastname reqd";
}
if (!Violated)
{
Violated = !(name.firstname == null) ? false : true;
if (ruleViolated)
this.message = "firstname reqd";
}
}
Siempre que se infrinja la verdad, quiero salir inmediatamente del ciclo foreach
. ¿Cómo lo hago?
Solo usa la declaración:
break;
Use break
;
EDITAR:
Sin relación a su pregunta, veo en su código la línea:
Violated = !(name.firstname == null) ? false : true;
En esta línea, tomas un valor booleano (name.firstname == null)
. Entonces, ¡aplica el !
operador a ella. Entonces, si el valor es verdadero, establece Violado en falso; de lo contrario a verdadero. Así que, básicamente, Violated se establece en el mismo valor que la expresión original (name.firstname == null)
. ¿Por qué no usar eso, como en:
Violated = (name.firstname == null);
Use la palabra clave break
.
Mira este código, ¡puede ayudarte a salir del ciclo rápido!
foreach (var name in parent.names)
{
if (name.lastname == null)
{
Violated = true;
this.message = "lastname reqd";
break;
}
else if (name.firstname == null)
{
Violated = true;
this.message = "firstname reqd";
break;
}
}
Durante las pruebas, descubrí que el bucle foreach después de la pausa va al beging de bucle y no al bucle. Así que cambié foreach por for break en este caso, funcionó correctamente, después de que el flujo de programa de interrupción se salga del ciclo.