Что означает для (;;) среднее значение в С#

Я вижу следующий код

for (;;)
{
//body...
}

Что это значит?

Ответы

Ответ 1

Это цикл без начального значения или условий, поэтому он будет работать вечно, подобно

while (true)
{
    // body...
}

Вам нужно будет использовать инструкцию break;, чтобы выйти из цикла.

Ответ 2

Цикл, подобный этому:

for (i = 0; i < 4; i++) { ... }

совпадает с:

i = 0;
while (i < 4) {
   ...
   i++;
}

Итак, такой цикл:

for (;;) { ... }

является более короткой формой для:

for (;true;) { ... }

поэтому он становится таким же, как:

;
while (true) {
   ...
   ;
}

т.е. инициализация и модификация являются необязательными, и когда условие опущено, оно просто оценивает true.

Ответ 3

Это вызовет бесконечный цикл. См. MSDN

Ответ 4

Он повторяет тело навсегда.

Вот разбор:

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, просто наведите указатель мыши на каждый код операции и вы увидите всплывающее описание на английском языке. Для этого конкретного примера вам нужно будет нажать кнопку "Стоп", чтобы увидеть кнопки результатов, потому что этот пример завершается навсегда.

Ответ 5

while(true) { /* body */ }