首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >嵌套的“for”循环的数量有限制吗?

嵌套的“for”循环的数量有限制吗?
EN

Stack Overflow用户
提问于 2016-12-27 22:30:27
回答 2查看 10.9K关注 0票数 80

因为每件事都有限制,我想知道嵌套的for循环的数量是否有限制,或者只要我有内存,我就可以添加它们,Visual Studio编译器可以创建这样的程序吗?

当然,64个或更多的嵌套for循环不便于调试,但是可行吗?

代码语言:javascript
复制
private void TestForLoop()
{
  for (int a = 0; a < 4; a++)
  {
    for (int b = 0; b < 56; b++)
    {
      for (int c = 0; c < 196; c++)
      {
        //etc....
      }
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2016-12-27 22:32:17

在C#语言规范或CLR中没有硬性限制。您的代码将是迭代的,而不是递归的,这可能会导致堆栈溢出非常快。

有一些东西可以算作阈值,例如(通常)您将使用的int计数器,它将在内存中为每个循环分配一个int (并且在您使用int分配整个堆栈之前...)。请注意,该int的使用是必需的,您可以重用相同的变量。

作为pointed out by Marco,当前阈值在编译器中比在实际语言规范或运行时中更多。一旦进行了重新编码,您可能会进行更多的迭代。默认情况下使用旧编译器的If you for example use Ideone,可以轻松获得1200多个for循环。

然而,那么多for循环是一个糟糕设计的指示器。我希望这个问题纯粹是假设的。

票数 40
EN

Stack Overflow用户

发布于 2016-12-28 04:03:36

所有编译为MSIL的C#都有一个限制。MSIL只能支持65535个局部变量。如果您的for循环与示例中显示的循环类似,则每个循环都需要一个变量。

您的编译器可能会分配堆上的对象作为局部变量的存储,从而绕过这一限制。然而,我不确定这会产生什么样的奇怪结果。可能会出现与反思有关的问题,这使得这种方法是非法的。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41347019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档