Как выйти из общего списка ForEach с делегатом?
Вопрос
Как выйти из общего списка ForEach с делегатом?Разрыв или возврат не работает.
Пример:
Peoples.ForEach(delegate(People someone)
{
if(someone.Name == "foo")
???? What to do to exit immediatly ?
});
Решение
Вы не можете добиться этого с Для каждого.
Другие советы
просто напиши это вот так
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