2010-01-10 15 views

Antwort

19

Es ist eine Schleife ohne Startwert oder Bedingungen, so dass es immer so weitergehen wird, ähnlich wie

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

Sie bräuchten eine break; Anweisung verwenden, aus der Schleife zu erhalten.

+7

Oder eine Rückkehr. Oder eine Ausnahme (nicht, dass Sie das tun sollten). –

+1

Es gilt auch für alle C-Sprachen. –

+0

In C wäre es so während while (1) {....} – t0mm13b

5

Dies würde eine Endlosschleife verursachen. Siehe MSDN

0
while(true) { /* body */ } 
4

Es wiederholt den Körper für immer. Hier

ist die Demontage:

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 ist ein sehr schönes, kleines Programm, das Sie erforschen Fragen wie diese können. Führen Sie linqpad aus, legen Sie das Dropdown-Menü für die Sprache auf "C# -Anweisungen" fest, fügen Sie Ihr Code-Snippet ein, klicken Sie auf "Ausführen", und klicken Sie auf die Schaltfläche "IL" über dem Ausgabefenster. Wenn Sie die IL-Assemblierung nicht kennen, bewegen Sie den Mauszeiger über jeden Opcode und eine englische Beschreibung erscheint. In diesem speziellen Beispiel müssen Sie auf stop klicken, um die Ergebnisschaltflächen anzuzeigen, da dieses Beispiel für immer eine Schleife ausführt.

+0

Danke für die linqpad Verbindung. Sieht sehr cool aus. – Ben

12

Eine Schleife wie folgt aus:

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

ist die gleiche wie:

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

also eine Schleife, wie folgt aus:

for (;;) { ... } 

ist eine kürzere Form für:

for (;true;) { ... } 

so wird es das gleiche wie:

; 
while (true) { 
    ... 
    ; 
} 

D.h. Die Initialisierung und Änderung sind optional, und wenn die Bedingung weggelassen wird, wird einfach true ausgewertet.

Verwandte Themen