하다... Loop 문(Visual Basic)

조건이 있는 동안 Boolean 또는 조건이 True 될 때까지 문 블록을 반복합니다 True.

문법

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 ]

부분

기간 정의
Do 필수 사항입니다. 루프의 정의를 시작합니다 Do .
While 사용할 경우 Until 지정할 수 없습니다. 가 될 때까지 condition 루프를 반복합니다 False.
Until 사용할 경우 While 지정할 수 없습니다. 가 될 때까지 condition 루프를 반복합니다 True.
condition 선택 사항입니다. Boolean 표현. 이 경우 condition Visual Basic은 Nothing이를 .로 False처리합니다.
statements 선택 사항입니다. 반복 conditionTrue되는 하나 이상의 문은 다음과 같습니다.
Continue Do 선택 사항입니다. 루프의 다음 반복으로 컨트롤을 전송합니다 Do .
Exit Do 선택 사항입니다. Do 루프에서 제어를 벗어납니다.
Loop 필수 사항입니다. 루프의 정의를 종료합니다 Do .

비고

Do...Loop 조건이 충족될 때까지 문 집합을 무한수로 반복하려는 경우 구조를 사용합니다. 정해진 횟수만큼 문을 반복하려면 For... 다음 문 은 일반적으로 더 나은 선택입니다.

둘 중 하나를 While 사용하거나 Until 지정할 수 있지만 둘 다 지정할 condition수는 없습니다. 둘 다 제공하지 않으면 루프에서 전송 제어가 Exit 실행될 때까지 루프가 계속됩니다.

루프의 시작 또는 끝에서 한 번만 테스트 condition 할 수 있습니다. 루프 시작 시(문에서Do) 테스트 condition 하는 경우 루프가 한 번도 실행되지 않을 수 있습니다. 루프의 끝에서 테스트하는 경우(문에서 Loop ) 루프는 항상 한 번 이상 실행됩니다.

조건은 일반적으로 두 값의 비교에서 발생하지만 부울 데이터 형식 값(True 또는 False)으로 계산되는 식일 수 있습니다. 여기에는 숫자 형식과 같이 변환 Boolean된 다른 데이터 형식의 값이 포함됩니다.

루프를 중첩하려면 하나의 루프를 다른 루프 내부에 배치할 수 있습니다. Do 서로 다른 종류의 컨트롤 구조를 중첩할 수도 있습니다. 자세한 내용은 중첩된 컨트롤 구조를 참조하세요.

비고

이 구조는 Do...Loop While...보다 더 많은 유연성을 제공합니다. End While 문은 루프가 중지될 True 때 또는 처음 종료될 때 condition 루프를 종료할지 여부를 결정할 수 있기 때문입니다True. 또한 루프의 시작 또는 끝에서 테스트 condition 할 수 있습니다.

종료할 수 있습니다.

Exit Do 문은 을 종료Do…Loop하는 다른 방법을 제공할 수 있습니다. Exit Do 는 문 뒤에 있는 문으로 제어를 즉시 전송합니다 Loop .

Exit Do 은 구조체와 같이 If...Then...Else 일부 조건이 평가된 후에 자주 사용됩니다. 잘못된 값 또는 종료 요청과 같이 반복을 계속할 필요가 없거나 불가능한 조건을 감지하는 경우 루프를 종료할 수 있습니다. 한 가지 사용 Exit Do 은 무한 루프를 발생시킬 수 있는 조건을 테스트하는 것입니다. 이 루프는 횟수가 크거나 무한할 수도 있습니다. 루프를 이스케이프하는 데 사용할 Exit Do 수 있습니다.

에 있는 임의의 Do…Loop수의 Exit Do 문을 포함할 수 있습니다.

중첩된 Do 루프 Exit Do 내에서 사용되는 경우 가장 안쪽 루프에서 다음 상위 수준의 중첩으로 제어를 전송합니다.

예제 1

다음 예제에서는 변수가 10보다 클 때까지 루프의 index 문이 계속 실행됩니다. 절은 Until 루프의 끝에 있습니다.

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

다음 예제에서는 절 대신 절을 Until 사용 While 하며 condition 루프 시작 시 끝 대신 테스트됩니다.

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

다음 예제 condition 에서는 변수가 100보다 크면 루프를 index 중지합니다. 그러나 루프의 문은 If 인덱스 변수가 Exit Do 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

다음 예제에서는 텍스트 파일의 모든 줄을 읽습니다. 메서드는 OpenText 파일을 열고 문자를 읽는 StreamReader 값을 반환합니다. Do...Loop 조건에서 메서드 StreamReader 는 Peek 추가 문자가 있는지 여부를 결정합니다.

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

참고하십시오