Як вийти з 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
але це досить справедлива здогадка).
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, очевидно, припинить всю функцію. Судячи з вашого запитання, ви можете скористатись справжньою справою повернення; заява.
Скористайтеся висловом 'break'. Мені здається жартівливим, що відповідь на ваше запитання буквально у вашому питанні! До речі, простий пошук у Google міг би дати вам відповідь.
як щодо:
return(sList.Contains("ok"));
Це повинно зробити трюк, якщо все, що ви хочете зробити, це перевірити "нормально" і повернути відповідь ...
Це не пряма відповідь на ваше запитання, але є набагато простіший спосіб зробити те, що ви хочете. Якщо ви використовуєте .NET 3.5 або новішу версію, принаймні. Він називається « Безліч»
bool found = sList.Contains("ok");
Або поверніться прямо з петлі:
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 #?