조건이 있는 동안 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
참고하십시오
.NET