Megosztás a következőn keresztül:


Do... Ciklusutasítás (Visual Basic)

Megismétli az utasításblokkot, amíg egy Boolean feltétel vagy True amíg a feltétel létre nem jön True.

Syntax

Do [ { While | Until } condition ]
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop
' -or-
Do
    [ statements ]
    [ Continue Do ]
    [ statements ]
    [ Exit Do ]
    [ statements ]
Loop [ { While | Until } condition ]

Részek

Időszak Definíció
Do Szükséges. Elindítja a hurok definícióját Do .
While Használat esetén Until nem adható meg. Ismételje meg a hurkot, amíg el nem condition ér False.
Until Használat esetén While nem adható meg. Ismételje meg a hurkot, amíg el nem condition ér True.
condition Opcionális. Boolean Kifejezés. Ha condition igen, akkor a NothingVisual Basic a következőképpen kezeli.False
statements Opcionális. Egy vagy több olyan utasítás, amely ismétlődik, vagy amíg condition nem.True
Continue Do Opcionális. Átviszi a vezérlést a ciklus következő iterációjára Do .
Exit Do Opcionális. Az átvitel vezérlése a Do cikluson kívülre történik.
Loop Szükséges. Leállítja a hurok definícióját Do .

Megjegyzések

Akkor használjon struktúrát Do...Loop , ha egy utasításkészletet határozatlan számú alkalommal szeretne megismételni, amíg egy feltétel nem teljesül. Ha meg szeretné ismételni az utasításokat egy megadott számú alkalommal, a For... A következő utasítás általában jobb választás.

Használhatja vagy WhileUntil megadhatja condition, de mindkettőt nem. Ha egyiket sem adja meg, a hurok addig folytatódik, amíg az Exit átviteli vezérlő ki nem lép a hurokból.

A ciklus elején vagy végén csak egyszer tesztelhet condition . Ha a ciklus elején (az Do utasításban) tesztelcondition, előfordulhat, hogy a ciklus még egyszer sem fut. Ha a ciklus végén (az Loop utasításban) tesztel, a ciklus mindig legalább egyszer fut.

A feltétel általában két érték összehasonlításából származik, de bármely olyan kifejezés lehet, amely logikai adattípusú értékre (True vagy False). Ide tartoznak az egyéb adattípusok, például a numerikus típusok értékei, amelyek konvertálva Booleanlettek.

Hurkokat úgy ágyazhat be Do , hogy az egyik hurkot egy másikba helyezi. Különböző típusú vezérlőstruktúrák is beágyazhatók egymásba. További információ: Beágyazott vezérlőstruktúrák.

Feljegyzés

A Do...Loop szerkezet nagyobb rugalmasságot biztosít, mint a While... End While Utasítás, mert lehetővé teszi, hogy eldöntse, hogy a hurok leáll, True vagy condition amikor először válikTrue. Emellett a ciklus elején vagy végén is tesztelhet condition .

Kilépés a Do

Az Exit Do utasítás alternatív módot kínálhat a kilépésre.Do…Loop Exit Do azonnal átviszi az irányítást az utasítást követő utasításba Loop .

Exit Do gyakran használják bizonyos feltételek kiértékelése után, például egy If...Then...Else struktúrában. Előfordulhat, hogy ki szeretne lépni egy ciklusból, ha olyan feltételt észlel, amely szükségtelenné vagy lehetetlenné teszi az iterálás folytatását, például hibás értéket vagy megszüntetési kérelmet. Az egyik lehetőség egy olyan feltétel teszteléseExit Do, amely végtelen ciklust okozhat, ami egy olyan hurok, amely nagy vagy akár végtelen számú alkalommal is futtatható. A hurok megkerülésére használható Exit Do .

Tetszőleges számú Exit Do utasítást megadhat egy adott helyen Do…Loop.

Beágyazott hurkokban DoExit Do való használat esetén az átvitel a legbelső hurokból és a beágyazás következő magasabb szintjére továbbítja az irányítást.

1. példa

Az alábbi példában a ciklusban lévő utasítások addig futnak, amíg a index változó nem nagyobb, mint 10. A Until záradék a ciklus végén található.

Dim index As Integer = 0
Do
    Debug.Write(index.ToString & " ")
    index += 1
Loop Until index > 10

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

2. példa

Az alábbi példa záradék helyett záradékot WhileUntil használ, és condition a ciklus elején teszteli, nem pedig a végén.

Dim index As Integer = 0
Do While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

3. példa

Az alábbi példában leállítja a ciklust, condition ha a index változó nagyobb, mint 100. A If ciklusban lévő utasítás azonban leállítja Exit Do a ciklust, ha az indexváltozó nagyobb, mint 10.

Dim index As Integer = 0
Do While index <= 100
    If index > 10 Then
        Exit Do
    End If

    Debug.Write(index.ToString & " ")
    index += 1
Loop

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

4. példa

Az alábbi példa egy szövegfájl összes sorát beolvassa. A OpenText metódus megnyitja a fájlt, és visszaad egy StreamReader karaktert, amely beolvassa a karaktereket. Do...Loop A feltételben a Peek metódus StreamReader határozza meg, hogy vannak-e további karakterek.

Private Sub ShowText(ByVal textFilePath As String)
    If System.IO.File.Exists(textFilePath) = False Then
        Debug.WriteLine("File Not Found: " & textFilePath)
    Else
        Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)

        Do While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        Loop

        sr.Close()
    End If
End Sub

Lásd még