Do...Loop 루프는 For(카운터에 중점을 둠) 또는 While(조건이 항상 입장에서 확인됨)보다 더 유연한 종료 조건으로 코드 블록의 반복을 조직할 수 있게 해줍니다. Visual Basic에는 네 가지 기본 구문 변형이 있습니다:
' 입장에서 조건 확인 Do While condition ' 루프 본문 Loop ' 출구에서 조건 확인 Do ' 루프 본문 Loop While condition ' Until과 유사: Do Until condition ' 루프 본문 Loop Do ' 루프 본문 Loop Until condition
Do...Loop을 사용하는 것이 좋을 경우:
질문: Do While condition 루프 내부에서 조건 condition이 처음부터 거짓이면 어떻게 될까요? 루프 본문이 하나라도 실행될까요?
답변: 아니요, 루프 본문은 전혀 실행되지 않으며, 검사는 첫 실행 전에 이루어집니다.
예시:
Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' 어떤 줄도 출력되지 않음.
이야기
데이터 파싱 단계에서 개발자는
Do Until reader.EndOfStream루프를 사용하여 파일에서 문자열을 읽는 작업을 했습니다. 그러나EndOfStream은 파일을 넘어 읽을 때만 참이 되므로, 마지막 줄이 처리되지 않았습니다. 올바른 방법은Do While Not reader.EndOfStream을 사용하거나, 조건 EOF에 따라 줄 단위로 읽기를 처리하여 루프를 종료하는 것입니다.
이야기
For에서 Do...Loop로 코드를 마이그레이션 할 때, 본문 내에서 변수 카운터를 명시적으로 증가시키지 않고 루프를 구현했습니다. 그 결과, 종료 조건이 결코 충족되지 않기 때문에 프로그램이 무한 루프에 빠졌습니다. 항상 Do...Loop 본문 내에서 중요한 변수의 변경 사항을 확인해야 합니다.
이야기
보고 시스템의 한 서브시스템에서 프로그래머는
Do...Loop중첩 루프를 사용했으나Exit Do의 중첩 조건을 고려하지 않았습니다: 내부Exit Do는 내부 루프만 종료되고 두 루프 모두 종료되지 않았습니다. 방어적 버그는 큰 데이터 양에서 실전에만 확인되었습니다.