다음을 통해 공유


하다... 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 조건에서 메서드 StreamReaderPeek 추가 문자가 있는지 여부를 결정합니다.

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

참고하십시오