如何使用委托退出通用列表ForEach?
题
如何使用委托退出通用列表ForEach?中断或返回不起作用。
示例:
Peoples.ForEach(delegate(People someone)
{
if(someone.Name == "foo")
???? What to do to exit immediatly ?
});
解决方案
使用 ForEach 无法实现此目的。
其他提示
就这样把它写出来
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