Come uscire da un elenco generico per ogni delegato?
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 ?
});
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