ProgrammierungVB.NET Entwickler

Wie ist die Do...Loop-Schleife in Visual Basic implementiert, welche Varianten ihrer Syntax gibt es und wann sollte man gerade diese Schleife anstelle von For oder While verwenden?

Bestehen Sie Vorstellungsgespräche mit dem Hintsage-KI-Assistenten

Antwort.

Die Schleife Do...Loop ermöglicht die Wiederholung eines Codeblocks mit flexibleren Beendigungsbedingungen als For (die sich auf einen Zähler stützt) oder While (bei der die Bedingung immer am Anfang geprüft wird). In Visual Basic gibt es vier Hauptvarianten der Syntax:

' Eingangskontrolle Do While condition ' Schleifenkörper Loop ' Ausgangskontrolle Do ' Schleifenkörper Loop While condition ' Analog auch mit Until: Do Until condition ' Schleifenkörper Loop Do ' Schleifenkörper Loop Until condition

Die Verwendung von Do...Loop ist sinnvoll, wenn:

  • Die genaue Anzahl der Iterationen nicht bekannt ist
  • Die Ausstiegskondition von den internen Aktionen der Schleife abhängt (z.B. Lesen aus einer Datei oder von der Konsole)

Fangfrage.

Frage: Was passiert, wenn die Bedingung condition in der Schleife Do While condition zunächst falsch ist? Wird der Schleifenkörper überhaupt einmal ausgeführt?

Antwort: Nein, der Schleifenkörper wird überhaupt nicht ausgeführt, da die Überprüfung VOR der ersten Ausführung erfolgt.

Beispiel:

Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' Es wird keine Zeile ausgegeben.

Beispiele für reale Fehler aufgrund mangelnder Kenntnisse der Feinheiten des Themas.


Geschichte

In der Phase des Datenparsing verwendete der Entwickler die Schleife Do Until reader.EndOfStream, innerhalb derer eine Zeile aus einer Datei gelesen wurde. Da jedoch EndOfStream nur nach dem Versuch, über das Ende der Datei hinaus zu lesen, wahr wird, wurde die letzte Zeile nicht verarbeitet. Der richtige Weg: Verwenden Sie Do While Not reader.EndOfStream oder verarbeiten Sie die Lesevorgänge zeilenweise und beenden Sie die Schleife anhand der EOF-Bedingung.


Geschichte

Bei der Migration von Code von For zu Do...Loop wurde eine Schleife ohne explizite Inkrementierung der Zählervariablen im Schleifenkörper implementiert. Infolgedessen ging das Programm in eine Endlosschleife, da die Beendigungsbedingung niemals eintrat. Es ist immer notwendig, die Änderung von Schlüsselvariablen innerhalb des Do...Loop-Körpers zu überwachen.


Geschichte

In einem der Berichtssysteme verwendete der Programmierer verschachtelte Do...Loop-Schleifen, ohne die Verschachtelung der Bedingungen für Exit Do zu berücksichtigen: das innere Exit Do verließ nur die innere Schleife, nicht beide. Ein kurzfristiger Blockierungsfehler wurde nur im Betrieb bei großen Datenmengen festgestellt.