Partilhar via


Como: Executar várias instruções para cada elemento em uma coleção ou matriz

A instrução For Each de construção é semelhante ao loop For... Next, mas ela executa o bloco de declaração para cada elemento em uma coleção, em vez de um número de vezes especificado.Um loop For Each... Next usa uma variável de elemento que representa um elemento diferente da coleção durante cada repetição do loop.

Repetindo um Boco da Instrução para uma Coleção

Para executar um grupo de instruções para cada elemento em uma coleção

  1. Identifique a coleção na qual será executado o bloco de declaração e use o For each... Next demonstrativo (Visual Basic) para especificar a variável de elemento e a coleção.

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

    Se a variável de elemento não for declarada fora do loop, você pode usar a cláusula As para declará-la como parte da instrução For Each .

    Visual Basic substitui automaticamente um outro elemento da coleção para cada iteração.

  2. Complete a construção For Each. .. Next com uma instrução Next após a última instrução a ser repetida.Você pode especificar a variável de elemento na instrução 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
    

    Você pode ler os elementos da coleção, mas você não poderá fazer alterações na coleção em si, como adicionar, excluir ou substituir qualquer elemento.No entanto, se um elemento for um tipo de referência, você pode acessar e definir seus membros.Como cada elemento Control é um tipo de referência, o código do exemplo anterior pode alterar sua propriedade BackColor.

Repetindo um Bloco da Instrução para uma Matriz

Você também pode percorrer uma matriz com um loop For Each... Next.No entanto, como com coleções, você pode apenas ler os elementos da matriz, não alterá-los.

Para executar um grupo de instruções para cada elemento em uma matriz.

  1. Use a instrução For Each para especificar a variável elemento e a matriz.Não coloque parênteses após o nome do array.

    Visual Basic trata a matriz da mesma maneira como ele trata uma coleção.

  2. Siga o bloco de declaração com uma instrução Next.Você pode especificar a variável de elemento na instrução Next.

    O procedimento a seguir se destina a encontrar a soma dos elementos de uma matriz e redefinir cada elemento para zero.

    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
    

    A soma funciona conforme o esperado porque ela apenas depende da leitura dos elementos.No entanto, redefinir para zero não funciona conforme o esperado, pois somente a cópia local de cada elemento é redefinida como zero, enquanto o elemento original é deixado inalterado na matriz original.

Consulte também

Tarefas

Como: transferência controle fora de uma estrutura de controle

Como: Executar várias instruções repetidamente

Como: Melhore o desempenho de um loop

Como: Pular para a próxima iteração de um loop e Continuar declaração (Visual Basic).

Conceitos

Estruturas de Decisão

Estruturas de loop

Outras estruturas de controle

Estruturas de controle aninhadas

Referência

For... Next demonstrativo (Visual Basic)

Outros recursos

Fluxo de controle no Visual Basic