Curiosidades C# – Arrays multidimensionais

C# suporta dois tipos de array multidimensionais, o primeiro tipo é chamado de rectangular array, que é simplesmente um array com várias dimensões.

Por exemplo, a declaração a seguir cria um array bidimensional de quatro linhas e duas colunas.

Exemplo:

int[,] array = new int[4, 2];

Saída de um rectangular array preenchido com “0”

Para deixar mais simples e visual, abaixo segue um exemplo de um array de 5 linhas e 7 colunas, preenchido com zeros e impresso no console.

Exemplo:

using System;

namespace MultidimensionalArrays
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] myArray = new int[5, 7];
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 7; j++)
                {
                    Console.Write(" " + myArray[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}

/* This will print
 0 0 0 0 0 0 0
 0 0 0 0 0 0 0
 0 0 0 0 0 0 0
 0 0 0 0 0 0 0
 0 0 0 0 0 0 0
Press any key to continue . . . 
 */

Podemos notar que o desenho é sempre um retângulo (ou quadrado) independente dos valores escolhidos para a geração do array

O segundo tipo é chamado de jagged array. Os elementos de um desse tipo podem ter diferentes dimensões e tamanhos. Às vezes, são chamados de um “array de arrays.”

O exemplo a seguir mostram como declarar esse tipo de array.

Exemplo:

int[][] jaggedArray = new int[3][];

Antes de usar jaggedArray, seus elementos devem ser inicializados. É possível inicializar os elementos dessa forma:

Exemplo:

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

Saída de um jagged array preenchido com “0”

Para deixar mais simples e visual, vou montar um exemplo de um array de 5 linhas, cada linha vai ter um array de tamanho diferente, depois imprimir a estrutura.

Exemplo:

using System;

namespace MultidimensionalArrays
{
    class Program
    {
        static void Main(string[] args)
        {
            int[][] myArray = new int[5][];
            myArray[0] = new int[8];
            myArray[1] = new int[4];
            myArray[2] = new int[2];
            myArray[3] = new int[3];
            myArray[4] = new int[7];
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < myArray[i].Length; j++)
                {
                    Console.Write(" " + myArray[i][j]);
                }
                Console.WriteLine();
            }
        }
    }
}
/* This will print
 0 0 0 0 0 0 0 0
 0 0 0 0
 0 0
 0 0 0
 0 0 0 0 0 0 0
Press any key to continue . . .
 */

Podemos ver que o desenho é variável já que cada linha tem um tamanho diferente.

Conclusão

Mesmo sendo possível, não é recomendado utilizar jagged array para montar um rectangular array. A utilização de qualquer um desses arrays depende totalmente das necessidades de sua aplicação.

Qualquer dúvida ou dicas, entre em contato: leandrolt@gmail.com

Principais referências

– https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/arrays/jagged-arrays
– https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/arrays/multidimensional-arrays
– Livro: Pro C# 7: With .NET and .NET Core – Andrew Troelsen

Leave a Reply

Your email address will not be published. Required fields are marked *