web-dev-qa-db-fra.com

C # aller à l'élément suivant dans la liste en fonction de l'instruction if dans foreach

J'utilise C #. J'ai une liste d'articles. Je passe en revue chaque élément en utilisant un foreach. Dans mon foreach, j'ai beaucoup d'instructions if vérifiant certaines choses. Si l'une de ces instructions if renvoie un faux, je veux qu'il ignore cet élément et passe à l'élément suivant de la liste. Toutes les instructions if qui suivent doivent être ignorées. J'ai essayé d'utiliser une pause, mais une pause quitte l'intégralité de l'instruction foreach.

Voici ce que j'ai actuellement:

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
   }
}

Merci

54
Brendan Vogt

Utilisation continue; au lieu de break; pour entrer l'itération suivante de la boucle sans exécuter plus de code contenu.

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;
   }
}

Les documents officiels sont ici , mais ils n'ajoutent pas beaucoup de couleur.

108
Steve Townsend

Essaye ça:

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

Tu devrais utiliser:

continue;
8
Aamir

Le mot clé continue fera ce que vous recherchez. break sortira de la boucle foreach, vous voudrez donc éviter cela.

4
Neil Knight

Utilisez continue au lieu de break. :-)

3
Enigmativity