【问题标题】:infinite loop example with minimum code in c#c# 中代码最少的无限循环示例
【发布时间】:2011-08-23 05:04:11
【问题描述】:

你能给我一个关于 c# 的无限循环示例吗?我想出了一些办法,但我认为还有更简单的方法。

【问题讨论】:

  • 你试过什么?我感觉在我发布此评论时会有 10 个答案...
  • 你的意思是,像while(true){}
  • 我很好奇。你到底想出了什么?
  • @Cody:我想到了for(;;){},但对我来说它看起来不自然,因为for(int i;.. 本身是用于循环当前位置显式状态。所以在不需要职位的时候,while(true)比较合适。
  • @Cody Gray:我会冒险猜测while 结构更容易记住,因为它是一个实际的英语习语(例如,当我在这里时,你这样做),而没有一个常见的for 的成语。

标签: c# .net infinite-loop


【解决方案1】:

典型的例子是 for 和 while 循环。例如

for(;;)
{}

while(true)
{}

但是,基本上任何没有中断或终止条件的循环结构都会无限循环。不同的开发者对哪种风格最好有不同的看法。此外,上下文可能会影响您选择哪种方法。

【讨论】:

    【解决方案2】:
    while (true);
    

    应该够了。

    生成的IL是:

    IL_0000:  br.s        IL_0000
    

    代码无条件地将控制权转移给自己。浪费 CPU 周期的好方法。

    【讨论】:

      【解决方案3】:

      无限循环:

      while (true)
      {
          // do stuff
      }
      

      打破它:

      while (true)
      {
          if (condition)
              break;
      }
      

      【讨论】:

        【解决方案4】:

        如果您需要更隐蔽,这可能就是您所追求的:

        for (;;) { }
        

        甚至

        l: goto l;
        

        【讨论】:

          【解决方案5】:

          本着 Code Golf 的精神:

          for(;;);
          

          【讨论】:

            【解决方案6】:

            虽然不完全是一个无限循环,但这将具有相同的实际效果并且消耗更少的 CPU。 :)

            System.Threading.Thread.Sleep(-1);
            

            【讨论】:

              【解决方案7】:

              试试这个,一个无限循环的例子。

              while(true)
              {
              
              }
              

              【讨论】:

                【解决方案8】:

                在同一个方法中调用一个方法,你就会发生一个无限循环(只有条件会迫使你打破循环

                void HelloWorld()
                {
                   HelloWorld();
                }
                

                【讨论】:

                • 这不是无限循环,这是无限递归,在大多数情况下会导致 StackOverflowException。
                • 好吧,你假设 OP 想要一个文字循环中的例子,顺便说一句,递归也是一个循环(可能不是你现在想象的上下文)
                • 如果发生剪裁,这也将无限运行(但这取决于编译器)。
                • @V4Vendetta:递归没有循环。虽然有时可以用递归来模拟特定的循环逻辑(反之亦然),但这并不意味着它们是等价的。这不是无限循环。
                • 他们可能会被终止,但他们不会自己终止。如果在稳定的硬件上完全留给自己,一个无条件的空循环确实会永远运行。另一方面,递归解决方案设置(并依赖!)最终导致其自身失败的条件,因此不能永远持续下去,因此不能被 any 词义的延伸。
                猜你喜欢
                • 1970-01-01
                • 2014-05-14
                • 1970-01-01
                • 2020-05-10
                • 1970-01-01
                • 2012-03-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多