c# - 如何从嵌套方法 'continue' ForEach 循环?

标签 c# c#-4.0

我有一个 ForEach 循环来处理相当大的联系人列表。我没有在这个主循环中做一堆处理,而是调用一个方法,该方法又调用一个方法等。方法调用其他类中的其他方法,可能是其他命名空间。

如果检测到条件并且我想继续进行下一个联系,我该如何中断当前方法?我在距主 ForEach 循环几个级别的方法中。

通常,您可以在 ForEach 中使用 continue 关键字跳到集合中的下一个元素。 continue 在这种情况下不是一个选项。当我键入 continue 时,它会带有红色下划线和“ Unresolved 消息”注释。

那么,我该怎么办?

最佳答案

你走错了路;退后一步,重新考虑您的设计。

一般来说,拥有试图影响调用者控制流的方法是一个非常糟糕的主意。方法是调用者的仆人,而不是主人。该方法不决定调用者下一步做什么;那不是它的事。相反,一种方法:

  • 执行计算并返回结果,或者
  • 修改一些状态,然后
  • 如果操作无法成功完成则抛出异常

有一些高级控制流样式,在这些样式中,被调用者与调用者一起确定“接下来会发生什么”——例如,继续传递样式。但你不应该去那里。他们很难理解。

关于c# - 如何从嵌套方法 'continue' ForEach 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904095/

相关文章:

c#-4.0 - 尝试从 VS 2012 发布网站时,导致 NormalizeServiceUrl 和 Missing or Invalid property 错误的原因是什么

c# - 用于检查修改状态的数据类型或数据结构?

c# - Awesomium 弹出窗口 - ShowCreatedWebView 示例

c# - 返回用内存流初始化的 SqlXml

c# - 使用 xaml 有条件地自动单击 MVVM 中的按钮

c# - WPF DataGrid - 遍历行并访问模板列中的控件

c# - 在 lambda 表达式 C# 中动态生成双引号字符串

c# - 就地清除的枚举扩展方法

c# - 提取 "Home"之后的 URL 部分

c# - 在循环内部与外部定义变量