пример бесконечного цикла с минимальным количеством кода на c#

#c# #.net #infinite-loop

#c# #.net #бесконечный цикл

Вопрос:

Можете ли вы привести мне пример бесконечного цикла на c # с минимальным количеством кода? Я кое-что придумал, но подумал, что может быть более простой способ.

Комментарии:

1. Что вы пробовали? У меня такое чувство, что к моменту публикации этого комментария будет 10 ответов…

2. Вы имеете в виду, как while(true){} ?

3. Мне любопытно. Что именно вы придумали?

4. @Cody: Я думал об этом, for(;;){} но для меня это выглядит неестественно, потому что for(int i;.. само по себе предназначено для зацикливания с явным состоянием текущей позиции. Поэтому, когда позиция не требуется, while(true) больше подходит.

5. @Cody Gray: Я бы рискнул предположить, что while конструкцию легче запомнить, потому что это настоящая английская идиома (например, пока я здесь, вы делаете это), тогда как для for нет общей идиомы.

Ответ №1:

Типичными примерами являются циклы for и while. Например

 for(;;)
{}
  

и

 while(true)
{}
  

Однако, в принципе, любая зацикленная конструкция без прерывания или условия завершения будет зацикливаться бесконечно. У разных разработчиков разные мнения о том, какой стиль лучше. Кроме того, контекст может повлиять на то, какой метод вы выберете.

Ответ №2:

 while (true);
  

Этого должно быть достаточно.

Сгенерированный IL является:

 IL_0000:  br.s        IL_0000
  

Код безоговорочно передает управление самому себе. Отличный способ тратить циклы процессора.

Ответ №3:

Бесконечный цикл:

 while (true)
{
    // do stuff
}
  

чтобы разорвать его:

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

Ответ №4:

Если вам нужно немного больше неясности, возможно, это то, что вам нужно:

 for (;;) { }
  

Или даже

 l: goto l;
  

Ответ №5:

В духе Code Golf:

 for(;;);
  

Ответ №6:

Хотя это и не совсем бесконечный цикл, это будет иметь тот же практический эффект и потреблять намного меньше процессора. 🙂

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

Ответ №7:

Попробуйте это, пример бесконечного цикла.

 while(true)
{

}
  

Ответ №8:

Вызовите метод внутри того же метода, и у вас получится бесконечный цикл (Только условия заставляют вас прерывать цикл)

 void HelloWorld()
{
   HelloWorld();
}
  

Комментарии:

1. Это не бесконечный цикл, это бесконечная рекурсия, которая в большинстве случаев приведет к исключению StackOverflowException.

2. Ну, вы предположили, что OP хотел пример в литеральных циклах, кстати, рекурсия тоже является циклом (возможно, не в том контексте, который вы представляете сейчас)

3. Если произойдет адаптация, это также будет выполняться бесконечно (но это зависит от компилятора).

4. @V4Vendetta: Рекурсия не является циклической. Хотя иногда возможно эмулировать определенную логику цикла с помощью рекурсии (и наоборот), это не означает, что они эквивалентны. Это не бесконечный цикл.

5. Они могут завершаться, но сами по себе не завершаются. Если предоставить все самому себе на стабильном оборудовании, безусловный пустой цикл действительно будет выполняться вечно. Рекурсивное решение, с другой стороны, устанавливает (и полагается на!) условия, которые в конечном итоге приведут к его собственному сбою, и, следовательно, не может продолжаться вечно, и, следовательно, не может считаться «бесконечным» в любом смысле этого слова.