回答:
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
typeのどんなものでも機能し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ステートメントは明らかに関数全体を終了します。あなたの質問から判断して、あなたはreturn trueを使いたいかもしれません。ステートメント。
それはあなたの質問への直接の答えではありませんが、あなたが望むことをするはるかに簡単な方法があります。少なくとも.NET 3.5以降を使用している場合。Enumerableと呼ばれます。
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#に匹敵するものはありませんか?