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
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.
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.
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.
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 controle aninhadas
Referência
For... Next demonstrativo (Visual Basic)