【发布时间】:2014-05-12 17:42:01
【问题描述】:
我有一个嵌套的 for-each 和 if-else 案例,如下所示。在这些情况下,如果 if-else 基于 if-else 语句,我必须转到循环的开头或循环中的其他位置。 GOTO 是处理这种情况的唯一方法吗?或者它可以是更好的设计? 为简洁起见,我只包含了两个 for-each,但在我的例子中,我有 4 个 for-each 和大约 13 个 if-else 语句。
【问题讨论】:
-
我有 4 个 for-each 和大约 13 个 if-else 语句 听起来像是设计问题和可怕的复杂性。
-
将您正在检查的内容和操作分解为不同的方法。
-
人们在这种情况下使用 GOTO,这就是很多人认为它是邪恶的原因。这种意大利面条式的代码非常难以理解和遵循代码流。
-
@DanTeesdale Break 会让我退出当前循环/条件,但不会进入最上面的循环,或者可能是最里面的循环。
-
@Zerotoinfinite 为什么要在熟悉循环后验证循环?您只需使用
if(ComputerStarted() && HardDiskValid() && KeyboardPluggedIn()){DoSomething();}开始循环如果碰巧其中一种验证方法需要循环,就这样吧,但外部循环不需要知道或关心它。
标签: c# .net if-statement foreach goto