Что означает для (;;) в C # - PullRequest
       35

Что означает для (;;) в C #

14 голосов
/ 10 января 2010

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

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

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

Ответы [ 5 ]

20 голосов
/ 10 января 2010

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

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

Для выхода из цикла вам понадобится оператор break;.

13 голосов
/ 10 января 2010

Такая петля:

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

совпадает с:

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

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

for (;;) { ... }

это более короткая форма для:

for (;true;) { ... }

так что он становится таким же, как:

;
while (true) {
   ...
   ;
}

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

5 голосов
/ 10 января 2010

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

4 голосов
/ 10 января 2010

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

Вот разборка:

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, установите в раскрывающемся списке язык «C # Statement», вставьте фрагмент кода, нажмите «Run», нажмите кнопку «IL» над окном вывода. Если вы не знаете сборку IL, просто наведите указатель мыши на каждый код операции и выскочит английское описание. В этом конкретном примере вам нужно будет нажать «Стоп», чтобы увидеть кнопки результатов, потому что этот пример цикличен навсегда.

0 голосов
/ 10 января 2010
while(true) { /* body */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...