有谁知道是否可以退出使用 lambda 的通用 ForEach?例如
someList.ForEach(sl =>
{
if (sl.ToString() == "foo")
break;
// continue processing sl here
// some processing code
}
);
该代码本身无法编译。我知道我可以使用常规的 foreach,但为了保持一致性,我想使用 lambda。
非常感谢。
当然。但首先请注意,我建议不要这样做;我说序列运算符不应该有副作用,而语句应该有副作用。如果您要在 ForEach lambda 中执行某些操作,请将其作为 foreach 循环体中的语句,而不是使其看起来像序列运算符。
也就是说,这就是你要做的。首先,您自己编写一个适用于任意序列而不仅仅是列表的 ForEach:
public static void ForEach<T>(this IEnumerable<T> sequence, Action<T> action)
{
foreach(var item in sequence) action(item);
}
现在你这样写你的休息时间:
someList
.TakeWhile(x=>x.ToString() != "foo")
.ForEach(sl=>
{/*your action here*/});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)