MatrizesArrays

Uma matriz é uma estrutura de dados que contém algumas variáveis acessadas por meio de índices calculados.An array is a data structure that contains a number of variables that are accessed through computed indices. As variáveis contidas em uma matriz, também chamadas de elementos da matriz, são todas do mesmo tipo, e esse tipo é chamado de tipo de elemento da matriz.The variables contained in an array, also called the elements of the array, are all of the same type, and this type is called the element type of the array.

Os tipos de matriz são tipos de referência, e a declaração de uma variável de matriz simplesmente reserva espaço para uma referência a uma instância de matriz.Array types are reference types, and the declaration of an array variable simply sets aside space for a reference to an array instance. As instâncias reais da matriz são criadas dinamicamente em tempo de execução usando o operador new.Actual array instances are created dynamically at runtime using the new operator. A operação new especifica a duração da nova instância de matriz, que depois fica fixa para o tempo de vida da instância.The new operation specifies the length of the new array instance, which is then fixed for the lifetime of the instance. Os índices dos elementos de uma matriz variam de 0 a Length - 1.The indices of the elements of an array range from 0 to Length - 1. O operador new inicializa automaticamente os elementos de uma matriz usando o valor padrão, que, por exemplo, é zero para todos os tipos numéricos e null para todos os tipos de referência.The new operator automatically initializes the elements of an array to their default value, which, for example, is zero for all numeric types and null for all reference types.

O exemplo a seguir cria uma matriz de elementos int, inicializa a matriz e imprime o conteúdo da matriz.The following example creates an array of int elements, initializes the array, and prints out the contents of the array.

using System;
class ArrayExample
{
    static void Main() 
    {
        int[] a = new int[10];
        for (int i = 0; i < a.Length; i++) 
        {
            a[i] = i * i;
        }
        for (int i = 0; i < a.Length; i++) 
        {
            Console.WriteLine($"a[{i}] = {a[i]}");
        }
    }
}

Este exemplo cria e opera em uma matriz unidimensional.This example creates and operates on a single-dimensional array. O C# também oferece suporte a matrizes multidimensionais.C# also supports multi-dimensional arrays. O número de dimensões de um tipo de matriz, também conhecido como classificação do tipo de matriz, é o número um mais o número de vírgulas escrito entre os colchetes do tipo de matriz.The number of dimensions of an array type, also known as the rank of the array type, is one plus the number of commas written between the square brackets of the array type. O exemplo a seguir aloca uma matriz unidimensional, bidimensional e tridimensional, respectivamente.The following example allocates a single-dimensional, a two-dimensional, and a three-dimensional array, respectively.

int[] a1 = new int[10];
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];

A matriz a1 contém 10 elementos, a matriz a2 contém 50 (10 × 5) elementos e a matriz a3 contém 100 (10 × 5 × 2) elementos.The a1 array contains 10 elements, the a2 array contains 50 (10 × 5) elements, and the a3 array contains 100 (10 × 5 × 2) elements. O tipo do elemento de uma matriz pode ser qualquer tipo, incluindo um tipo de matriz.The element type of an array can be any type, including an array type. Uma matriz com elementos de um tipo de matriz é chamada às vezes de matriz denteada, pois os tamanhos das matrizes do elemento nem sempre precisam ser iguais.An array with elements of an array type is sometimes called a jagged array because the lengths of the element arrays do not all have to be the same. O exemplo a seguir aloca uma matriz de matrizes de int:The following example allocates an array of arrays of int:

int[][] a = new int[3][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = new int[20];

A primeira linha cria uma matriz com três elementos, cada um do tipo int[], e cada um com um valor inicial de null.The first line creates an array with three elements, each of type int[] and each with an initial value of null. As linhas subsequentes inicializam os três elementos com referências às instâncias individuais da matriz de tamanhos variados.The subsequent lines then initialize the three elements with references to individual array instances of varying lengths.

O operador new permite que os valores iniciais dos elementos da matriz sejam especificados com um inicializador de matriz, que é uma lista de expressões escritas entre os delimitadores { e }.The new operator permits the initial values of the array elements to be specified using an array initializer, which is a list of expressions written between the delimiters { and }. O exemplo a seguir aloca e inicializa um int[] com três elementos.The following example allocates and initializes an int[] with three elements.

int[] a = new int[] {1, 2, 3};

Observe que o tamanho da matriz é inferido do número de expressões entre { e }.Note that the length of the array is inferred from the number of expressions between { and }. A variável local e declarações de campo podem ser reduzidas ainda mais, de modo que o tipo de matriz não precise ser redefinido.Local variable and field declarations can be shortened further such that the array type does not have to be restated.

int[] a = {1, 2, 3};

Os dois exemplos anteriores são equivalentes ao seguinte:Both of the previous examples are equivalent to the following:

int[] t = new int[3];
t[0] = 1;
t[1] = 2;
t[2] = 3;
int[] a = t;