Как выйти из цикла foreach
на С#, если один из элементов соответствует требованию?
Например:
foreach(string s in sList){
if(s.equals("ok")){
//jump foreach loop and return true
}
//no item equals to "ok" then return false
}
Как выйти из цикла foreach
на С#, если один из элементов соответствует требованию?
Например:
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;
В качестве альтернативы, если вам нужно сделать что-то еще после того, как вы нашли элемент:
bool found = false;
foreach (string s in sList)
{
if (s.equals("ok"))
{
found = true;
break; // get out of the loop
}
}
// do stuff
return found;
Используйте break;
, и это приведет к выходу из цикла foreach
Вы можете избежать явных циклов, используя маршрут 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.
}
Должен сделать трюк. Оператор break просто заканчивает выполнение цикла, в то время как оператор return, очевидно, завершает всю функцию. Судя по вашему вопросу, вы можете использовать return true; утверждение.
Вы можете использовать break
, который выпрыгивает из ближайшего замкнутого цикла, или вы можете просто прямо return true
как насчет:
return(sList.Contains("ok"));
Это должно сделать трюк, если все, что вы хотите сделать проверяет "ok" и возвращает ответ...
Используйте оператор break. Я нахожу это смешным, что ответ на ваш вопрос буквально в вашем вопросе! Кстати, простой поиск Google мог дать вам ответ.
foreach(string s in sList)
{
if(s.equals("ok"))
{
return true;
}
}
return false;
Вернитесь прямо из цикла:
foreach(string s in sList){
if(s.equals("ok")){
return true;
}
}
// if you haven't returned by now, no items are "ok"
return false;
Или используйте 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
}
Однако в вашем случае было бы лучше сделать что-то вроде этого:
if(sList.Contains("ok"))
{
// at least one element is "ok"
}
else
{
// no elements are "ok"
}
Это не прямой ответ на ваш вопрос, но есть гораздо более простой способ сделать то, что вы хотите. Если вы используете .NET 3.5 или новее, по крайней мере. Он называется Enumerable.Contains
bool found = sList.Contains("ok");
var ind=0;
foreach(string s in sList){
if(s.equals("ok")){
return true;
}
ind++;
}
if (ind==sList.length){
return false;
}