Um arranjo é uma estrutura de dados que permite armazenar vários elementos de um mesmo tipo de dados. Um exemplo prático que podemos pensar é numa lista de mercado. Uma lista desse tipo mantém todos os itens que queremos comprar num mercado, assim, um carro, por exemplo, jamais poderá estar nessa lista, já que um carro não faz parte de itens de mercado.
Pensando em código, imagine o seguinte problema: precisamos guardar o nome de 100 pessoas diferentes. Pense na dificuldade que seria para declarar as variáveis para cada nome:
Pois é, trabalhoso demais. Então, para facilitar a manipulação de agrupamentos de variáveis existe o conceito de Arranjo, ou Array, em inglês – uma estrutura que agrupa todas essas variáveis (agrupa em sequência, como uma fila) e nos permite acesso a eles através de um ou mais índices.
Em C#, os arranjos são declarados com o seguinte formato:
Para inicializar o arranjo com valores, basta atribuir à ele uma lista de valores entre chaves, separados por vírgulas:
É também possível definir o tamanho do arranjo e depois atribuir valores aos elementos individualmente:
É importante notar que, em C#, os índices de um arranjo começam em 0, ou seja, o primeiro elemento de um arranjo é acessado pelo índice 0, o segundo pelo índice 1, e assim por diante.
Vetores
Podemos separar os arranjos em dois tipo. O primeiro tipo de arranjo é o Vetor - um arranjo unidimensional, onde os dados são organizados sequencialmente um atrás do outro como uma fila.
Imagine uma fila organizada de pessoas, essa fila cresce apenas em sentido único, ou seja, unidimensional.
A imagem acima demonstra um vetor de 9 posições, ou seja, ele pode guardar 9 dados diferentes.
Um vetor automaticamente começa sempre pelo índice 0, e termina com o índice igual ao número total de elementos - 1, no caso da imagem, índice 8.
Se criamos um vetor é porque posteriormente desejamos usar os dados armazenados dentro dele. Para acessar a informação guardada num vetor é necessário usar o colchetes e o índice da posição - [0] acessa o primeiro elemento, [1] acessa o segundo elemento, [2] acessa o terceiro elemento, e assim por diante.
Uma prática comum é combinar o for com vetores para varrer os elementos do vetor em sequência, usando a variável de controle.
Em C# todo arranjo possui um atributo chamado Length, que mantém o número de elementos do vetor. Assim, o for roda as posições, uma a uma, em ordem, até o último elemento.
Matrizes
Se o vetor é unidimensional (cresce em dimensão única ou sentido único), a matriz é um arranjo multidimensional, cresce em duas dimensões ou mais (ou em dois sentidos ou mais).
Um caso de uso muito próprio das matrizes é de jogos em Tilemap, em que o cenário do jogo se divide em células (tiles), que costumam ser gerenciados através de matrizes.
Por ser arranjo, as regras do vetor são aplicadas à matriz, com a diferença de que agora temos mais um campo de acesso ou mais um índice (lembra? A matriz cresce em mais de uma dimensão, então precisamos de acesso a posições de cada uma das dimensões).
A imagem a seguir demonstra visualmente como se organiza uma matriz:
E para varrer os elementos de uma matriz, precisamos adicionar um for, ou seja, um laço, para cada dimensão: