デリゲートで汎用リストForEachを終了する方法は?
質問
デリゲートで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()
内から例外をスローできます。
所属していません StackOverflow