C# - Acessando um array multidimensional
Hoje veremos como acessar e exibir os elementos de um array multidimensional. |
No artigo de hoje vou abordar um tema básico : o acesso a um array com mais de uma dimensão.
Os arrays podem ter mais de uma dimensão e a linguagem C# suporta arrays com até 32 dimensões.
Um array multidimensional pode ser declarado adicionando vírgulas entre colchetes na declaração do array :
Declaração de um array de inteiros de duas dimensões com 3 linhas e 3 colunas :
int [,] array1 = new int [3 , 3] ;
Podemos usar um laço for para ler e recuperar os valores dos elementos de um array multidimensional definindo um laço for para cada uma das dimensões do array:
int[,] numeros = { {1, 4, 2}, {3, 6, 8} }; for (int i = 0; i < numeros.Length(0); i++) { for (int j = 0; j < numeros.Length(1); j++) { Console.WriteLine(numeros[i, j]); } } |
Para obter as dimensões do array usamos o método GetLength(n), onde a primeira dimensão inicia com zero (n=0).
Além disso podemos usar também um laço foreach, neste caso os elementos são percorridos de modo a que os índices da dimensão mais à direita sejam aumentados primeiro e, em seguida, da próxima dimensão à esquerda, e assim por diante seguindo para a esquerda:
foreach(var n in numeros) { Console.Write($"{n} "); } |
Acessando e exibindo os elementos de um array
A seguir veremos como acessar e exibir os elementos de um array multidimensional usando algumas opções :
1- Usando um laço for
Acessando um array com 3 linhas e 2 colunas
int[,]
numeros = new
int[3,
2] { { 1, 2 }, { 3, 4 }, { 5, 6 } }; for (int i = 0; i < numeros.GetLength(0); i++){ for (int j = 0; j < numeros.GetLength(1); j++) { Console.Write($"{numeros[i, j]}"); } Console.WriteLine(); } Console.ReadKey(); |
2- Usando um laço foreach
int[,,]
numeros = { { { 1, 3, 5 }, { 2, 4, 6 } }, { { 2, 4, 9 }, { 5, 7, 11 } } }; foreach (var n in numeros){ Console.Write($"{n} "); } Console.ReadKey(); |
3- Usando o método String.Join
Outra boa alternativa é usar o método String.Join(), que concatena os elementos do array especificado usando o separador especificado.
Acessando um array com 3 linhas e 3 colunas :
int[,]
numeros = { { 1, 2 , 4 }, { 3, 4 , 5 }, { 5, 6 , 7 } }; Console.WriteLine(String.Join( " ", numeros.Cast<int>()));Console.ReadKey(); |
4- Usando o método List.ForEach()
Outra abordagem é usar o método ToList() para converter a matriz multidimensional em uma List<T> genérica e chamar o método ForEach() de List para imprimir cada elemento da lista.
Observe que essa abordagem inclui a criação da lista como uma etapa intermediária, o que não é recomendado.
int[,]
array = { { 11, 22, }, { 33, 44 }, { 55, 66 } }; List< int> numeros = array.Cast<int>().ToList();numeros.ForEach(Console.WriteLine); Console.ReadKey(); |
Vimos assim como acessar e percorrer um array de mais de uma dimensão.
E estamos conversados...
"Amai, pois, a
vossos inimigos, e fazei bem, e emprestai, sem nada esperardes, e será grande o
vosso galardão, e sereis filhos do Altíssimo; porque ele é benigno até para com
os ingratos e maus."
Lucas 6:36
Referências:
NET - Unit of Work - Padrão Unidade de ...