Generics 如何退出带有委托的通用列表?

Generics 如何退出带有委托的通用列表?,generics,list,foreach,delegates,Generics,List,Foreach,Delegates,如何使用委托退出通用列表ForEach?中断或返回不起作用 例如: Peoples.ForEach(delegate(People someone) { if(someone.Name == "foo") ???? What to do to exit immediatly ? }); 你不能用。你不能用。就这样写出来 foreach(People someone in Peoples) {

如何使用委托退出通用列表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;

就这样写出来

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
循环。

您可以执行以下操作:

        Peoples.TakeWhile(p=> p.Name != "foo")
            .ToList().ForEach(p => Console.WriteLine(p.Name));
但就性能而言,这太过分了,太糟糕了


只需使用一个简单的
foreach
循环。

虽然不推荐,但当条件满足时,您可以从
foreach()
内部引发异常。

虽然不推荐,但当条件满足时,您可以从
foreach()
内部引发异常。

但是代价高昂。异常不是程序正常行为的一部分,线索在名称中。:)尽管代价高昂。异常不是程序正常行为的一部分,线索在名称中。:)