Was macht eine C # for-Schleife, wenn alle Ausdrücke fehlen? zB für (;;) {}

8

Ich kann nur annehmen, dass es eine Endlosschleife ist.

Kann ich einen der drei Ausdrücke in einer for-Schleife auslassen? Gibt es für jeden einen Standard, wenn er weggelassen wird?

    
PaulB 30.03.2009, 13:55
quelle

10 Antworten

5

Es ist in der Tat eine Endlosschleife.

Unter der Haube wird der Compiler / Jitter dies (effektiv) zu einer einfachen JMP-Operation optimieren.

Es ist auch effektiv dasselbe wie:

%Vor%

(außer dass dies auch weg optimiert ist, da der (wahre) Teil eines while-Ausdrucks normalerweise eine Art Vergleich benötigt, aber in diesem Fall gibt es nichts Vergleichbares. Einfach weiterschleifen!)

    
CraigTP 30.03.2009, 14:00
quelle
15

Ja, es ist eine Endlosschleife.

Beispiele:

for (; ;) { } (aka: Der Krebs)

while (true) { }

do { } while (true)

    
Alex Fort 30.03.2009 13:56
quelle
4

Ja, das ist eine Endlosschleife. Sie können einen der drei Ausdrücke auslassen, obwohl es meiner Erfahrung nach entweder der erste oder alle drei sind.

    
Harper Shelby 30.03.2009 13:56
quelle
3

Es ist eine unendliche Schleife. Effektiv, es ist das gleiche wie folgt:

%Vor%     
Dustin Campbell 30.03.2009 13:57
quelle
3

for (; ;) { } ist Endlosschleife, Sie sind richtig.

Wenn Sie es verwenden möchten, müssen Sie eine Bedingung in Ihren Schleifenkörper einfügen, damit sie aus der Schleife austreten kann.

%Vor%     
Syed Tayyab Ali 30.03.2009 14:04
quelle
2

Es gibt keine Standardeinstellungen. Nichts wird initialisiert, nichts wird inkrementiert und es gibt keinen Test für den Abschluss.

    
ChrisF 30.03.2009 13:57
quelle
2

Es gibt keine Voreinstellungen für den ersten und dritten Teil (sie haben standardmäßig nichts und es würde funktionieren). Der Standardwert für bedingten Ausdruck ist true , wodurch for(;;) effektiv zu einer Endlosschleife wird. (Wenn der Standardwert false wäre, wäre es nutzlos gewesen, solch ein Konstrukt zu haben).

    
Mehrdad Afshari 30.03.2009 14:00
quelle
1

Wie in C und C ++ können Sie alle drei oder alle drei weglassen.

    
Dave Van den Eynde 30.03.2009 13:56
quelle
1

Microsofts C # Programmer's Reference sagt:

  

Alle Ausdrücke der for-Anweisung sind optional; Zum Beispiel wird die folgende Anweisung verwendet, um eine Endlosschleife zu schreiben:

%Vor%     
JeffH 30.03.2009 18:52
quelle
0

Es ist eine Endlosschleife:).

    
Sijmen Mulder 30.03.2009 13:56
quelle

Tags und Links