Domanda

Come posso uscire da un elenco generico per ciascuno con un delegato? L'interruzione o il ritorno non funziona.

Esempio:

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

Soluzione

Non puoi raggiungere questo obiettivo con ForEach .

Altri suggerimenti

scrivilo in questo modo

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

per saltare semplicemente foo e fare comunque l'azione per tutti gli altri che potresti fare

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

Potresti fare qualcosa del tipo:

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

ma è eccessivo e negativo in termini di prestazioni ...

Usa semplicemente un semplice ciclo foreach .

Sebbene non sia raccomandato, puoi generare un'eccezione dall'interno di ForEach () quando la condizione è soddisfatta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top