Ответ 1
Это цикл без начального значения или условий, поэтому он будет работать вечно, подобно
while (true)
{
// body...
}
Вам нужно будет использовать инструкцию break;
, чтобы выйти из цикла.
Я вижу следующий код
for (;;)
{
//body...
}
Что это значит?
Это цикл без начального значения или условий, поэтому он будет работать вечно, подобно
while (true)
{
// body...
}
Вам нужно будет использовать инструкцию break;
, чтобы выйти из цикла.
Цикл, подобный этому:
for (i = 0; i < 4; i++) { ... }
совпадает с:
i = 0;
while (i < 4) {
...
i++;
}
Итак, такой цикл:
for (;;) { ... }
является более короткой формой для:
for (;true;) { ... }
поэтому он становится таким же, как:
;
while (true) {
...
;
}
т.е. инициализация и модификация являются необязательными, и когда условие опущено, оно просто оценивает true
.
Это вызовет бесконечный цикл. См. MSDN
Он повторяет тело навсегда.
Вот разбор:
IL_0001: br.s IL_0005
IL_0003: nop
IL_0004: nop
IL_0005: ldc.i4.1
IL_0006: stloc.0
IL_0007: br.s IL_0003
LINQPad - очень приятная небольшая утилита, позволяющая вам исследовать такие вопросы. Запустите linqpad, установите раскрывающееся меню языка в "Операторы С#", поместите в свой фрагмент кода, нажмите "Запустить", нажмите кнопку "IL" над выходным окном. Если вы не знаете сборку IL, просто наведите указатель мыши на каждый код операции и вы увидите всплывающее описание на английском языке. Для этого конкретного примера вам нужно будет нажать кнопку "Стоп", чтобы увидеть кнопки результатов, потому что этот пример завершается навсегда.
while(true) { /* body */ }