如果其中一個元素符合要求,如何在C#中跳出foreach
循環?如何跳出C#中的foreach循環?
例如:
foreach(string s in sList){
if(s.equals("ok")){
//jump foreach loop and return true
}
//no item equals to "ok" then return false
}
如果其中一個元素符合要求,如何在C#中跳出foreach
循環?如何跳出C#中的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;
我建議第二個例子會更好地重寫爲'bool found = callFunctionInFirstCodeSnipper(list); // do stuff' – ICR
使用break;
,這將退出的foreach迴圈
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語句顯然會終止整個函數。從你的問題來看,你可能想使用返回true;聲明。
您可以使用break
其跳出最近的封閉循環的,或者你可以直接return true
你可以通過採取LINQ路線來避免顯式循環:
sList.Any(s => s.Equals("ok"))
或者只是使用'Contains(「ok」)''。 –
@Graham Clark:'Contains'假定你正在迭代'ICollection
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");
怎麼樣:
return(sList.Contains("ok"));
這應該做的伎倆,如果你想要做的 是檢查是否有「確定」,返回答案...
使用'break'語句。我覺得很幽默,你的問題的答案在字面上是在你的問題!順便說一下,一個簡單的谷歌搜索可以給你答案。
好笑。在Python中,您只需在sList中'return「ok」: - 在C#中沒有可比的東西嗎? –
@Tim Pietzcker:當然有,請看spender的回答。事實上,習慣了Linq之後,許多命令式代碼看起來就像洞穴圖紙。 – R0MANARMY