Matrizes denteadas (guia de programação translation from VPE for Csharp)
Uma matriz denteada é uma matriz cujos elementos são matrizes.Os elementos de uma matriz denteada podem ser de diferentes dimensões e tamanhos.Uma matriz denteada às vezes é chamada de uma "matriz de matrizes". Os exemplos a seguir mostram como declarar, inicializar e acesso irregulares arrays.
Uma declaração de matriz unidimensional com três elementos, cada uma delas é uma matriz unidimensional de números inteiros é:
int[][] jaggedArray = new int[3][];
Antes de usar jaggedArray, seus elementos devem ser inicializados. Você pode inicializar os elementos como este:
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];
Cada um dos elementos é uma matriz unidimensional de inteiros.O primeiro elemento é uma matriz de 5 inteiros, o segundo é uma matriz de inteiros de 4 e o terceiro é uma matriz de inteiros de 2.
Também é possível usar os inicializadores para preencher os elementos da matriz com valores, caso em que você não precisa que o dimensionar da matriz.Por exemplo:
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
Você também pode inicializar a matriz na declaração como este:
int[][] jaggedArray2 = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
Você pode usar o seguinte formato abreviado.Observe que você não pode omitir o new operador de inicialização elementos porque não há nenhuma inicialização padrão para os elementos:
int[][] jaggedArray3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
Uma matriz denteada é uma matriz de matrizes e, portanto, seus elementos são tipos de referência e são inicializados para null.
Você pode acesso elementos individuais da matriz, como nestes exemplos:
// Assign 77 to the second element ([1]) of the first array ([0]):
jaggedArray3[0][1] = 77;
// Assign 88 to the second element ([1]) of the third array ([2]):
jaggedArray3[2][1] = 88;
É possível misturar conjuntos multidimensionais e irregulares.Este é uma declaração e a inicialização de uma matriz denteada unidimensional que contém elementos de matriz bidimensional de tamanhos diferentes:
int[][,] jaggedArray4 = new int[3][,]
{
new int[,] { {1,3}, {5,7} },
new int[,] { {0,2}, {4,6}, {8,10} },
new int[,] { {11,22}, {99,88}, {0,9} }
};
Você pode acessar elementos individuais, sistema autônomo mostrado neste exemplo, que exibe o valor do elemento de [1,0] da primeira matriz (valor 5):
System.Console.Write("{0}", jaggedArray4[0][1, 0]);
O método Length Retorna o número de conjuntos contidos na matriz denteada. Por exemplo, supondo que você tenha declarado array anterior, esta linha:
System.Console.WriteLine(jaggedArray4.Length);
Retorna um valor de 3.
Exemplo
Este exemplo cria uma matriz cujos elementos são matrizes.Cada um dos elementos de matriz tem um dimensionar diferente.
class ArrayTest
{
static void Main()
{
// Declare the array of two elements:
int[][] arr = new int[2][];
// Initialize the elements:
arr[0] = new int[5] { 1, 3, 5, 7, 9 };
arr[1] = new int[4] { 2, 4, 6, 8 };
// Display the array elements:
for (int i = 0; i < arr.Length; i++)
{
System.Console.Write("Element({0}): ", i);
for (int j = 0; j < arr[i].Length; j++)
{
System.Console.Write("{0}{1}", arr[i][j], j == (arr[i].Length - 1) ? "" : " ");
}
System.Console.WriteLine();
}
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
/* Output:
Element(0): 1 3 5 7 9
Element(1): 2 4 6 8
*/
Consulte também
Conceitos
Referência
Matrizes (Guia de programação do C#)
Arrays de único dimensional (guia de programação translation from VPE for Csharp)
Matrizes multidimensionais (guia de programação translation from VPE for Csharp)