c# - 我怎样才能有效地跳出 C# 中的双循环?

标签 c# loops

<分区>

这是我目前用来跳出双循环并继续执行 DoStuff() 的方法:

foreach (var enemyUnit in nearbyEnemyUnits) {
    var skip = false;
    foreach (var ownUnit in ownUnits) {
        if (ownUnit.EngagedTargetTag == enemyUnit.tag) {
            skip = true;
            break;
        }
    }

    if (skip) continue;

    DoStuff(enemyUnit);
}

整个“定义一个临时 bool 变量来检查跳过”对我来说似乎很老套。在像 Go 这样的语言中,我可以使用标签来跳出循环,甚至使内部循环成为 clojure 的一部分。在 C# 中执行此操作的最佳方法是什么?

我已经像上面的例子一样做了很长时间,觉得一定有更好的方法 - 在这一点上几乎不好意思问。

谢谢

最佳答案

您可以使用 goto、匿名方法,将其包装在方法中,或者 C#7 中您可以使用本地函数

static void Main(string[] args)
{
   void localMethod()
   {
      foreach (var enemyUnit in nearbyEnemyUnits)
         foreach (var ownUnit in ownUnits)
            if (ownUnit.EngagedTargetTag == enemyUnit.tag)
               return;
   }

   localMethod();
}

其他资源

关于c# - 我怎样才能有效地跳出 C# 中的双循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966239/

相关文章:

c# - 检查系统是否安装.Net Framework 4.6

c# - 如何对 Dynamic 对象使用 Parallel.ForEach 方法

c# - 为什么 Application.Exit 无法工作?

python - 返回列表,其中元素依次从列表中获取/python

java - 致力于循环迭代。有没有办法调用这些方法而不会有几个 "do"声明

vba - 在 Excel 中复制时,日期中的月份和日期有时会颠倒

c# - 导航回 ASPX 页面时出现 ERR_CACHE_MISS

c# - 如何使用 ASP.NET 反序列化 JavaScript 数组

python - 在Python中循环浏览Twitter趋势数据

php - 两两遍历结果数组