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 Nothing Visual 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 While
Until
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 Boolean
lettek.
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 Do
Exit 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 While
Until
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