Do...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 이 Nothing 이면 Visual Basic은 이를 False 로 처리합니다. |
statements |
선택 사항. condition 이 True 가 될 때까지 반복되는 하나 이상의 문은 다음과 같습니다. |
Continue Do |
선택 사항. Do 루프의 다음 반복으로 컨트롤을 전송합니다. |
Exit Do |
선택 사항. Do 루프에서 제어를 전송합니다. |
Loop |
필수입니다. Do 루프의 정의를 종료합니다. |
설명
조건이 충족될 때까지 문 집합을 무한수로 반복하려는 경우 Do...Loop
구조를 사용합니다. 지정된 횟수만큼 문을 반복하려면 일반적으로 For...Next 문이 더 나은 선택입니다.
While
또는 Until
를 사용하거나 condition
을 지정할 수 있지만 둘 다 지정할 수는 없습니다. 둘 다 제공하지 않으면 루프에서 Exit
전송 제어가 실행될 때까지 루프가 계속됩니다.
루프의 시작 또는 끝에서 한 번만 condition
을 테스트 할 수 있습니다. 루프 시작 시(Do
문에서) condition
을 테스트하는 경우 루프가 한 번도 실행되지 않을 수 있습니다. 루프의 끝에서 테스트하는 경우(Loop
문에서) 루프는 항상 한 번 이상 실행됩니다.
조건은 일반적으로 두 값의 비교에서 발생하지만 부울 데이터 형식 값(True
또는False
)으로 계산되는 식일 수 있습니다. 여기에는 숫자 형식과 같이 Boolean
로 변환된 다른 데이터 형식의 값이 포함됩니다.
하나의 루프를 다른 루프 내에 배치하여 Do
루프를 중첩할 수 있습니다. 서로 다른 종류의 컨트롤 구조를 중첩할 수도 있습니다. 자세한 내용은 중첩된 컨트롤 구조를 참조하세요.
참고 항목
이 Do...Loop
구조는 condition
이 True
가 되는 것을 멈출 때 루프를 종료할지, 아니면 True
이 되는 때를 결정할 수 있기 때문에 While...End While 문보다 더 많은 유연성을 제공합니다. 또한 루프의 시작 또는 끝에서 condition
을 테스트할 수 있습니다.
Exit Do
Exit Do 문은 Do…Loop
을 종료하는 다른 방법을 제공할 수 있습니다. Exit Do
는 Loop
문 뒤에 있는 문으로 제어를 즉시 전송합니다.
Exit Do
은 If...Then...Else
구조체와 같이 일부 조건이 평가된 후에 자주 사용됩니다. 잘못된 값이나 종료 요청과 같이 반복을 계속할 필요가 없거나 불가능하게 만드는 조건을 감지하는 경우 루프에서 나갈 수 있습니다. Exit Do
의 한 가지 사용은 무한 루프를 발생시킬 수 있는 조건을 테스트하는 것입니다. 이 루프는 많은 횟수 또는 무한히 실행될 수도 있습니다. 루프를 탈출하는 데 Exit Do
을 사용할 수 있습니다.
Do…Loop
에 있는 임의의 수의 Exit Do
문을 포함할 수 있습니다.
중첩된 Do
루프 내에서 사용되는 경우 Exit Do
은 가장 안쪽 루프에서 다음 상위 수준의 중첩으로 컨트롤을 전송합니다.
예 1
다음 예제에서는 index
변수가 10보다 클 때까지 루프의 문이 계속 실행됩니다. 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
다음 예제에서는 index
변수가 100보다 크면 condition
이 루프를 중지합니다. 그러나 루프의 If
문은 인덱스 변수가 10보다 크면 Exit 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
예시 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
참고 항목
.NET