【发布时间】:2011-01-16 00:07:30
【问题描述】:
有谁知道是否可以退出使用 lambda 的通用 ForEach?例如
someList.ForEach(sl =>
{
if (sl.ToString() == "foo")
break;
// continue processing sl here
// some processing code
}
);
此代码本身不会编译。我知道我可以使用常规的 foreach,但为了保持一致性,我想使用 lambda。
非常感谢。
【问题讨论】:
-
是否有理由必须这样做?我一直对
break;保持警惕。在开关盒之外,我从未见过需要使用它们。 -
我经常使用
break和continue。有时你只是不希望循环体一直执行,break/continue简化了代码。 -
您有什么理由更喜欢 Lambda 表达式吗?
-
@Loadmaster:我很好奇,您是否真的找到了阻止主体其余部分执行的唯一方法是中断/继续的代码?没有其他东西能达到同样的效果吗?
-
就风格而言,
if(condition) continue;在 IMO 上比if(!condition) { loop body }更干净
标签: c# generics lambda foreach break