要素の1つが要件を満たしている場合、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;
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
を使用できます。
「break」ステートメントを使用します。あなたの質問に対する答えが文字通りあなたの質問の中にあるのはユーモラスです!ところで、簡単なGoogle検索で答えが得られたかもしれません。
どうですか:
return(sList.Contains("ok"));
あなたがやりたいのが「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"
}