2017-12-18 11 views
2

Liest durch this während der Untersuchung von XSD-Validierung. Kam über diesen Code hinweg.While-loop-Syntaxerklärung

Könnte mir bitte jemand erklären, wozu das Semikolon hier verwendet wird?

while (reader.Read()) 
     ; 

Entfernen gibt einen Fehler "Invalid expression term '}' ; expected".

+1

Bitte auf Linie hinweisen. – mmushtaq

+0

Aktualisiert die Frage – Akshatha

Antwort

4

Schauen wir uns documentation, wo while Schlüsselwort definiert:

while_statement 
    : 'while' '(' boolean_expression ')' embedded_statement 
    ; 

Wie Sie sehen, while Aussage mit ; enden. Also, wenn embedded_statement leer ist, erhalten Sie:

while (boolean_expression) 
    ; 

statt:

while (boolean_expression) 
    embedded_statement 
    ; 

embedded_statement können in { } Klammern eine Zeile Ausdruck wie Console.WriteLine() oder ein Block von Code sein:

while (boolean_expression) 
{ 
    embedded_statement 
} 
; 

Hier ist ; nicht notwendig, können Sie einfach schreiben:

while (boolean_expression) 
{ 
    embedded_statement 
} 
+0

Danke. Wusste nicht, dass es notwendig war, es auf diese Weise zu beenden, da ich immer daran gewöhnt war, "while (boolean_expression) { embedded_statement }" zu verwenden. +1 für den angegebenen Link. – Akshatha

0

den Körper gelegt für while-Schleife

while(reader.Read()){ 
    // your code there 
    } 
0
while (reader.Read()); 

Das Semikolon wird die while-Schleife nur verursacht zu bewerten reader.Read() kontinuierlich, bis es false

Eine andere Möglichkeit gibt diese

schreiben konnte
var result = reader.Read() 
while (result) 
{ 
    result = reader.Read(); 
}