다음을 통해 공유


Do...Loop 문(Visual Basic)

업데이트: 2007년 11월

Boolean 조건이 True인 동안 또는 해당 조건이 True가 될 때까지 문의 블록을 반복합니다.

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

구성 요소

  • While
    Until이 사용되지 않는 경우 필수적 요소입니다. condition이 False가 될 때까지 루프를 반복합니다.

  • Until
    While이 사용되지 않는 경우 필수적 요소입니다. condition이 True가 될 때까지 루프를 반복합니다.

  • condition
    선택적 요소이며 Boolean 식입니다. condition이 Nothing인 경우 Visual Basic에서는 False로 처리합니다.

  • statements
    선택적 요소입니다. condition이 True인 동안 또는 True가 될 때까지 반복되는 하나 이상의 문입니다.

  • Exit Do
    선택적 요소입니다. Do 루프 밖으로 제어를 전송합니다.

  • Loop
    필수적 요소입니다. Do 루프의 정의를 끝냅니다.

설명

조건이 충족될 때까지 문을 무한히 반복하려면 Do...Loop 구조를 사용합니다. 문을 지정된 횟수만큼 반복하려면 For...Next 문을 사용하는 것이 좋습니다.

Do...Loop 구조를 사용하면 condition이 True에서 변경된 경우 또는 처음으로 True가 된 경우에 루프를 끝낼지 여부를 선택할 수 있으므로 While...End While 문(Visual Basic)을 사용하는 것보다 더 융통성 있습니다. 또한 루프의 시작 부분이나 끝 부분에서 condition을 테스트할 수 있습니다.

규칙

  • 조건의 특성. 조건은 일반적으로 두 값을 비교해서 지정됩니다. 그러나 Boolean 데이터 형식(Visual Basic) 값(True 또는 False)으로 계산되는 식도 될 수 있습니다. 이런 경우 Boolean으로 변환된 다른 데이터 형식(예: 숫자 형식)의 값을 포함합니다.

  • 조건 테스트. 루프의 시작 부분이나 끝 부분에서 condition을 한 번만 테스트할 수 있습니다. While 또는 Until 중 하나를 사용하여 condition을 지정할 수 있으며 둘 다 사용할 수는 없습니다.

  • 반복 횟수. 루프의 시작 부분에서 condition을 테스트하는 경우인 Do 문에서는 루프가 한 번도 실행되지 않을 수 있습니다. Loop 문의 루프 끝 부분에서 테스트하는 경우 루프는 항상 한 번 이상 실행됩니다.

  • 중첩 루프. 하나의 Do 루프 내에 다른 Do 루프를 중첩할 수 있습니다. 다른 종류의 제어 구조를 중첩할 수도 있습니다. 자세한 내용은 중첩 제어 구조를 참조하십시오.

  • 루프 밖으로 전송.Exit 문(Visual Basic)을 사용하면 제어가 Loop 문 다음 문으로 전달됩니다. 잘못된 값이나 종료 요청과 같이 계속 반복할 필요가 없거나 반복할 수 없는 조건을 발견하면 루프를 끝낼 수 있습니다. 원하는 수의 Exit Do 문을 Do 루프의 원하는 위치에 배치할 수 있습니다. Exit Do는 If...Then...Else 구조에서처럼 일부 조건을 계산한 후에 사용될 수도 있습니다.

무한 루프

Exit Do를 사용하여 조건이 무한 루프 상태가 되는지 여부를 테스트할 수도 있습니다. 무한 루프란 아주 많이 또는 무한정 실행되는 루프를 말합니다. 이러한 조건을 발견하면 Exit Do를 사용하여 루프를 빠져나올 수 있습니다. 그렇지 않으면 루프가 계속해서 실행됩니다.

다음 예제에서는 루프가 2 ^ 31번보다 많이 실행되게 하는 값이 number에 할당되었습니다. If 문은 이 조건을 검사하고 있으면 종료하여 무한 루프를 방지합니다.

Sub exitDoExample()
    Dim counter As Integer = 0
    Dim number As Integer = 8
    Do Until number = 10
        If number <= 0 Then Exit Do
        number -= 1
        counter += 1
    Loop
    MsgBox("The loop ran " & counter & " times.")
End Sub
참고:

무한 루프를 중단하려면 Esc 키 또는 Ctrl+Break를 누릅니다.

예제

다음 예제에서는 중첩된 Do...Loop 구조를 보여 주고 While 및 Until 사용 방법, 루프의 시작 부분(Do 문)과 끝 부분(Loop 문)에서의 테스트 방법 등을 설명합니다.

Sub DoExample()
    Dim check As Boolean = True
    Dim counter As Integer = 0
    Do
        Do While counter < 20
            counter += 1
            If counter = 10 Then
                check = False
                Exit Do
            End If
        Loop
    Loop Until check = False
End Sub

위의 예제에서는 내부 Do...Loop 구조를 10회 반복하고 플래그 값을 False로 설정한 다음 Exit Do 문을 사용하여 즉시 종료합니다. 외부 루프는 플래그 값을 확인하는 즉시 종료됩니다.

참고 항목

작업

방법: 루프 성능 개선

개념

루프 구조

중첩 제어 구조

참조

For...Next 문(Visual Basic)

Boolean 데이터 형식(Visual Basic)

Exit 문(Visual Basic)

While...End While 문(Visual Basic)