방법: 컬렉션이나 배열의 각 요소에 대해 몇 가지 문 실행(Visual Basic)

For Each 문은 For...Next 루프와 비슷하지만 문 블록을 지정된 횟수만큼 실행하는 것이 아니라 컬렉션의 각 요소에 대해 실행합니다. For Each...Next 루프에서는 루프가 반복될 때마다 다른 컬렉션 요소를 나타내는 요소 변수를 사용합니다.

컬렉션에 대해 문 블록 반복

컬렉션의 각 요소에 대해 문 그룹을 실행하려면

  1. 문 블록을 실행할 컬렉션을 지정하고 For Each...Next 문(Visual Basic)을 사용하여 요소 변수와 컬렉션을 모두 지정합니다.

    For Each thisControl As System.Windows.Forms.Control In thisForm.Controls 
    

    요소 변수가 루프 외부에 선언되지 않았으면 As 절을 사용하여 요소 변수를 For Each 문의 일부로 선언할 수 있습니다.

    Visual Basic에서는 문 블록을 반복할 때마다 다른 컬렉션 요소를 자동으로 대체합니다.

  2. 반복할 마지막 문 뒤에 Next 문을 추가하여 For Each...Next 구문을 완성합니다. Next 문에 요소 변수를 지정할 수 있습니다.

    Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form)
        For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
            thisControl.BackColor = System.Drawing.Color.LightBlue
        Next thisControl 
    End Sub
    

    컬렉션의 요소를 읽을 수는 있지만 요소 추가, 삭제 또는 바꾸기와 같이 컬렉션 자체를 변경하는 작업은 수행할 수 없습니다. 그러나 요소가 참조 형식인 경우에는 해당 멤버에 액세스하고 설정할 수 있습니다. 각 Control 요소는 참조 형식이므로 위 예제의 코드에서는 요소의 BackColor 속성을 변경할 수 있습니다.

배열에 대해 문 블록 반복

For Each...Next 루프를 사용하여 배열을 반복할 수도 있습니다. 그러나 배열 요소는 컬렉션과 마찬가지로 읽을 수만 있고 변경할 수는 없습니다.

배열의 각 요소에 대해 문 그룹을 실행하려면

  1. For Each 문을 사용하여 요소 변수와 배열을 모두 지정합니다. 배열 이름 뒤에 괄호를 넣을 수 없습니다.

    Visual Basic에서는 컬렉션 처리 방법과 동일한 방법으로 배열을 처리합니다.

  2. 문 블록 뒤에 Next 문을 추가합니다. Next 문에 요소 변수를 지정할 수 있습니다.

    다음 프로시저는 배열 요소의 합계를 계산하고 각 요소를 0으로 다시 설정하기 위한 것입니다.

    Function sumAndReset(ByRef numbers() As Integer) As Integer
        Dim sum As Integer = 0
        For Each elt As Integer In numbers 
            sum += elt
            ' The following statement works only on the local copy
            ' of the array, not on the original array.
            elt = 0
        Next elt
        Return sum
    End Function
    

    합계를 구하는 작업은 요소를 읽는 작업만 필요로 하므로 의도한 대로 수행됩니다. 그러나 0으로 다시 설정하는 작업의 경우에는 각 요소의 로컬 복사본만 0으로 다시 설정되고 원본 요소는 원래 배열에서 변경되지 않은 상태로 남아 있기 때문에 의도한 대로 작업이 수행되지 않습니다.

참고 항목

작업

방법: 제어 구조 밖으로 제어 전달(Visual Basic)

방법: 반복적으로 몇 가지 문 실행(Visual Basic)

방법: 루프 성능 개선(Visual Basic)

방법: 루프의 다음 반복으로 건너뛰기(Visual Basic)

참조

For...Next 문(Visual Basic)

개념

판단 구조(Visual Basic)

루프 구조(Visual Basic)

기타 제어 구조(Visual Basic)

중첩 제어 구조(Visual Basic)

기타 리소스

Visual Basic의 제어 흐름