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:


José Carlos Macoratti