デリゲートを使用して汎用リストForEachを終了するにはどうすればよいですか?ブレークまたはリターンは機能しません。
例:
Peoples.ForEach(delegate(People someone)
{
if(someone.Name == "foo")
???? What to do to exit immediatly ?
});
ForEachではこれを実現できません。
このように書いてください
foreach(People someone in Peoples)
{
if(someone.Name == "foo") break;
// rest of code below for != "foo"...
}
fooをスキップして、他のすべての人のためにアクションを実行する
if(someone.Name == "foo") continue;
あなたは次のようなことをすることができます:
Peoples.TakeWhile(p=> p.Name != "foo")
.ToList().ForEach(p => Console.WriteLine(p.Name));
しかし、それはやり過ぎであり、パフォーマンスの点で悪いです...
単純なforeach
ループを使用するだけです。
ForEach()
推奨されていませんが、条件が満たされたときに、内部から例外をスローできます。