2010-11-24 41 views
43

Estoy usando C#. Tengo una lista de elementos. Recorro cada elemento con un foreach. Dentro de mi foreach tengo un montón de declaraciones if que comprueban algunas cosas. Si cualquiera de estas declaraciones if devuelve un falso, entonces quiero que omita ese elemento y vaya al siguiente elemento de la lista. Todas las declaraciones if que siguen deben ser ignoradas. Traté de usar un descanso, pero un descanso sale de toda la declaración foreach.C# ir al siguiente elemento en la lista según la declaración if en foreach

Esto es lo que tengo actualmente:

foreach (Item item in myItemsList) 
{ 
    if (item.Name == string.Empty) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
    } 

    if (item.Weight > 100) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
    } 
} 

Gracias

+0

@PaulG: ¿Por qué editar mi post? –

+0

puede ver el historial de edición haciendo clic en el intervalo al lado de 'editado'; en este caso, se trataba de un arreglo de error simple. –

+0

@Steve: Gracias. –

Respuesta

88

Uso continue; en lugar de break; para entrar en la siguiente iteración del bucle sin ejecutar más del código contenido.

foreach (Item item in myItemsList) 
{ 
    if (item.Name == string.Empty) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
     continue; 
    } 

    if (item.Weight > 100) 
    { 
     // Display error message and move to next item in list. Skip/ignore all validation 
     // that follows beneath 
     continue; 
    } 
} 

documentos oficiales son here, pero que no añaden mucho color.

+1

Gracias. Pensé que continuar era continuar en el cuerpo de los foreach. –

+0

@Brendan: para hacer eso, simplemente no usa ninguna instrucción de control, como si fuera una cascada de sentencias 'if' fuera de un bucle. –

14

Prueba esto:

foreach (Item item in myItemsList) 
{ 
    if (SkipCondition) continue; 
    // More stuff here 
} 
4

La palabra clave continue hará lo que está buscando. break saldrá del bucle foreach, por lo que querrá evitar eso.

7

Deberá utilizar:

continue; 
Cuestiones relacionadas