0

デリゲートを使用して汎用リストForEachを終了するにはどうすればよいですか?ブレークまたはリターンは機能しません。

例:

        Peoples.ForEach(delegate(People someone)
        {
            if(someone.Name == "foo")
               ???? What to do to exit immediatly ?
        });
4

4 に答える 4

2

ForEachではこれを実現できません。

于 2009-04-30T09:37:29.797 に答える
1

このように書いてください

foreach(People someone in Peoples)
{
    if(someone.Name == "foo") break;
    // rest of code below for != "foo"...
}

fooをスキップして、他のすべての人のためにアクションを実行する

if(someone.Name == "foo") continue;
于 2009-04-30T09:39:24.627 に答える
0

あなたは次のようなことをすることができます:

        Peoples.TakeWhile(p=> p.Name != "foo")
            .ToList().ForEach(p => Console.WriteLine(p.Name));

しかし、それはやり過ぎであり、パフォーマンスの点で悪いです...

単純なforeachループを使用するだけです。

于 2009-04-30T09:49:59.923 に答える
0

ForEach()推奨されていませんが、条件が満たされたときに、内部から例外をスローできます。

于 2009-04-30T09:52:29.540 に答える