Do...Loop Deyimi (Visual Basic)

Koşul veya True durumuna gelene Truekadar bir Boolean deyim bloğunu yineler.

Sözdizimi

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 ]

Parça

Süre Tanım
Do Gerekli. Döngünün Do tanımını başlatır.
While Kullanılırsa Until verilemez. döngüsüne kadar conditionFalseyineleyin.
Until Kullanılırsa While verilemez. döngüsüne kadar conditionTrueyineleyin.
condition isteğe bağlı. Boolean Ifa -de. ise conditionNothing, Visual Basic bunu olarak Falseele alır.
statements isteğe bağlı. bir veya daha fazla deyim, iken veya until conditionTrueolarak yinelenir.
Continue Do isteğe bağlı. Denetimi döngünün bir sonraki yinelemesine Do aktarır.
Exit Do isteğe bağlı. Aktarımlar denetimi döngünün Do dışına aktarır.
Loop Gerekli. Döngünün Do tanımını sonlandırır.

Açıklamalar

Bir Do...Loop koşul karşılanana kadar bir dizi deyimi süresiz olarak yinelemek istediğinizde bir yapı kullanın. Deyimleri belirli bir sayıda yinelemek istiyorsanız For ... Next Deyimi genellikle daha iyi bir seçimdir.

belirtmek için veya kullanabilirsinizWhile, ancak ikisini birden kullanamazsınızcondition.Until Hiçbirini vermezseniz, döngü, döngü dışında bir Exit aktarım denetimine kadar devam eder.

Döngünün başında veya sonunda yalnızca bir kez test condition edebilirsiniz. Döngünün başlangıcında (deyimindeDo) test condition ederseniz döngü bir kez bile çalışmayabilir. Döngünün sonunda (deyiminde Loop ) test ederseniz, döngü her zaman en az bir kez çalışır.

Koşul genellikle iki değerin karşılaştırmasından kaynaklanabilir, ancak Boole Veri Türü değeri (True veya False) olarak değerlendirilen herhangi bir ifade olabilir. Buna, sayısal türler gibi olarak dönüştürülen Booleandiğer veri türlerinin değerleri dahildir.

Bir döngünün içine başka bir döngü koyarak döngüleri iç içe Do yerleştirebilirsiniz. Ayrıca, farklı türlerde denetim yapılarını da iç içe yerleştirebilirsiniz. Daha fazla bilgi için bkz . İç İçe Denetim Yapıları.

Not

YapıDo...Loop, While'ten daha fazla esneklik sağlar... End While Deyimi, döngünün ne True zaman condition veya ilk haline geldiğinde Truesonlandırılıp sonlandırılmayacağına karar vermenizi sağlar. Ayrıca döngünün başında veya sonunda test condition etmenize de olanak tanır.

Do'dan çık

Exit Do deyimi, uygulamasından çıkmak için alternatif bir Do…Loopyol sağlayabilir. Exit Do denetimi hemen deyimini izleyen deyime Loop aktarır.

Exit Do genellikle, örneğin bir If...Then...Else yapıda bazı koşullar değerlendirildikten sonra kullanılır. Hatalı bir değer veya sonlandırma isteği gibi yinelemeyi gereksiz veya imkansız hale getiren bir koşul algılarsanız döngüden çıkmak isteyebilirsiniz. bunun bir kullanımıExit Do, sonsuz döngüye neden olabilecek bir koşulu test etmektir. Bu, çok sayıda ve hatta sonsuz sayıda çalıştırabilen bir döngüdür. Döngüden kaçmak için kullanabilirsiniz Exit Do .

içinde herhangi bir Do…Loopyerde istediğiniz sayıda Exit Do deyim ekleyebilirsiniz.

İç içe Do döngüler içinde kullanıldığında, Exit Do denetimi en iç döngünün dışına ve sonraki üst iç içe yerleştirme düzeyine aktarır.

Örnek 1

Aşağıdaki örnekte, değişken 10'dan büyük olana kadar index döngüdeki deyimler çalışmaya devam eder. Until yan tümcesi döngünün sonundadır.

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 

Örnek 2

Aşağıdaki örnek yan tümce yerine yan Until tümce kullanır While ve condition sonunda değil döngünün başında test edilir.

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 

Örnek 3

Aşağıdaki örnekte değişken condition 100'den büyük olduğunda döngü durdurulur index . If Ancak döngüdeki deyimi, dizin değişkeni 10'dan büyük olduğunda deyiminin döngünün durmasına neden olurExit Do.

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 

Örnek 4

Aşağıdaki örnek bir metin dosyasındaki tüm satırları okur. OpenText yöntemi dosyayı açar ve karakterleri okuyan bir StreamReader döndürür. koşulunda Do...Loop , Peek yöntemi StreamReader ek karakter olup olmadığını belirler.

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

Ayrıca bkz.