Question

Comment puis-je quitter une liste générique ForEach avec un délégué? Pause ou retour ne fonctionne pas.

Exemple:

        Peoples.ForEach(delegate(People someone)
        {
            if(someone.Name == "foo")
               ???? What to do to exit immediatly ?
        });
Était-ce utile?

La solution

Vous ne pouvez pas y parvenir avec ForEach .

Autres conseils

écrivez-le simplement comme ceci

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

sauter juste foo et toujours faire l'action pour tout le monde que vous pourriez faire

if(someone.Name == "foo") continue;

Vous pouvez faire quelque chose comme:

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

mais c'est exagéré et mauvais en termes de performances ...

Utilisez simplement une simple boucle foreach .

Bien que cela ne soit pas recommandé, vous pouvez générer une exception depuis ForEach () lorsque la condition est remplie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top