Вопрос

Как выйти из общего списка 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() когда условие выполнено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top