Pea*_*nut 8 c# generics foreach lambda break
有谁知道是否有可能退出使用lambda的通用ForEach?例如
someList.ForEach(sl =>
{
if (sl.ToString() == "foo")
break;
// continue processing sl here
// some processing code
}
);
Run Code Online (Sandbox Code Playgroud)
这段代码本身不会编译.我知道我可以使用常规foreach但为了保持一致性我想使用lambda.
非常感谢.
Eri*_*ert 17
当然.但首先,请注意我建议不要这样做; 我说序列操作符不应该有副作用,并且语句应该有副作用.如果你在ForEach lambda中做了一些事情,那么在foreach循环的主体中做一个声明,而不是让它看起来像一个序列操作符.
那就是说,这就是你做的.首先,你自己写一个ForEach,它可以处理任意序列,而不仅仅是列表:
public static void ForEach<T>(this IEnumerable<T> sequence, Action<T> action)
{
foreach(var item in sequence) action(item);
}
Run Code Online (Sandbox Code Playgroud)
现在你像这样写下你的休息:
someList
.TakeWhile(x=>x.ToString() != "foo")
.ForEach(sl=>
{/*your action here*/});
Run Code Online (Sandbox Code Playgroud)