Как выйти из foreach
цикла в C #, если один из элементов соответствует требованиям?
Например:
foreach(string s in sList){
if(s.equals("ok")){
//jump foreach loop and return true
}
//no item equals to "ok" then return false
}
Как выйти из foreach
цикла в C #, если один из элементов соответствует требованиям?
Например:
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;
bool found = callFunctionInFirstCodeSnipper(list); // do stuff
Используйте, break;
и это выйдет из цикла foreach
Вы можете избежать явных циклов, выбрав маршрут LINQ:
sList.Any(s => s.Equals("ok"))
Contains("ok")
.
Contains
предполагается, что вы повторяете файл ICollection<T>
. Any
будет работать со всем, что имеет тип IEnumerable<T>
, и в этом случае вопрос явно не указывает, какой тип коллекции он выполняет итерацию ( List
хотя a - довольно справедливое предположение).
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. Мне смешно, что ответ на ваш вопрос буквально находится в вашем вопросе! Кстати, ответ мог бы дать простой поиск в Google.
как насчет:
return(sList.Contains("ok"));
Это должно помочь, если все, что вы хотите сделать, это проверить наличие «ок» и вернуть ответ ...
Это не прямой ответ на ваш вопрос, но есть гораздо более простой способ сделать то, что вы хотите. Если вы используете .NET 3.5 или новее, по крайней мере. Он называется Enumerable.Contains.
bool found = sList.Contains("ok");
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"
}
var ind=0;
foreach(string s in sList){
if(s.equals("ok")){
return true;
}
ind++;
}
if (ind==sList.length){
return false;
}
$
это неверный синтаксис C #.
var
это совершенно правильное ключевое слово C #, так что вы в порядке
return "ok" in sList:
- разве нет чего-то сопоставимого в C #?