Comment sortir d'une boucle foreach
en C # si l'un des éléments satisfait à l'exigence?
Par exemple:
foreach(string s in sList){
if(s.equals("ok")){
//jump foreach loop and return true
}
//no item equals to "ok" then return false
}
foreach (string s in sList)
{
if (s.equals("ok"))
return true;
}
return false;
Si vous avez besoin de faire autre chose après avoir trouvé l'élément, vous pouvez également:
bool found = false;
foreach (string s in sList)
{
if (s.equals("ok"))
{
found = true;
break; // get out of the loop
}
}
// do stuff
return found;
Utilisez break;
et ceci sortira de la boucle foreach
Vous pouvez éviter les boucles explicites en prenant la route LINQ:
sList.Any(s => s.Equals("ok"))
foreach (var item in listOfItems) {
if (condition_is_met)
// Any processing you may need to complete here...
break; // return true; also works if you're looking to
// completely exit this function.
}
Devrait faire l'affaire. L'instruction break mettra simplement fin à l'exécution de la boucle, tandis que l'instruction return mettra évidemment fin à la fonction entière. À en juger par votre question, vous voudrez peut-être utiliser le retour vrai; déclaration.
Vous pouvez utiliser break
qui saute hors de la boucle englobante la plus proche, ou vous pouvez simplement directement return true
Utilisez l'instruction 'break'. Je trouve amusant que la réponse à votre question se trouve littéralement dans votre question! À propos, une simple recherche sur Google aurait pu vous donner la réponse.
que diriez-vous:
return(sList.Contains("ok"));
Cela devrait faire l'affaire si tout ce que vous voulez faire est de vérifier "OK" et de renvoyer la réponse ...
Ce n'est pas une réponse directe à votre question, mais il existe un moyen beaucoup plus facile de faire ce que vous voulez. Si vous utilisez .NET 3.5 ou une version ultérieure, au moins. Cela s'appelle Enumerable.Contains
bool found = sList.Contains("ok");
foreach(string s in sList)
{
if(s.equals("ok"))
{
return true;
}
}
return false;
Soit revenir tout droit sorti de la boucle:
foreach(string s in sList){
if(s.equals("ok")){
return true;
}
}
// if you haven't returned by now, no items are "ok"
return false;
Ou utilisez break
:
bool isOk = false;
foreach(string s in sList){
if(s.equals("ok")){
isOk = true;
break; // jump out of the loop
}
}
if(isOk)
{
// do something
}
Cependant, dans votre cas, il pourrait être préférable de faire quelque chose comme ceci:
if(sList.Contains("ok"))
{
// at least one element is "ok"
}
else
{
// no elements are "ok"
}