【发布时间】:2012-12-28 14:43:45
【问题描述】:
GOTO 是退出双 ForEach 的唯一方法吗?
For Each city in cities
For Each person in city.People
If IsOK(person) GOTO Found_
Next person
Next city
Found_:
' ...
问题是针对 VB.NET,但也想知道针对 C#...
【问题讨论】:
-
Return也是退出多级循环的好方法。有时这需要拆分您的函数,以便循环位于辅助函数中,但这通常是对结构的改进。 -
不想返回,返回填充退出函数!
-
@serhio:现在你的函数做了两件事:它搜索一个人,它对找到的人做一些事情。这违反了单一职责原则,它很好地分解为一个执行搜索的辅助函数(并使用
Return)和一个调用搜索助手然后处理结果的调用者。 -
如果在这个 C# 中与 Java 类似,带标签的中断应该可以工作并且比 goto 更好,请参见此处:stackoverflow.com/a/886979/559144 尚未测试...
-
@DJKRAZE:OP 正在寻求 GOTO 的替代方案