Arrays
Imagine uma fila de sete anões mineradores, prontos para o trabalho. Essa fila organizada é a nossa analogia para um Array.
Um array é uma estrutura de dados fundamental que armazena uma coleção de elementos. Para entender completamente, vamos observar as três regras de ouro da fila dos anões:
Todos são do Mesmo Tipo: Na fila, só há anões. Você não pode colocar um elfo ou um dragão no meio. Em C#, isso significa que um array declarado para
intsó pode conter números inteiros. Um array destringsó pode conter textos. Essa homogeneidade é uma regra estrita.A Fila Tem Tamanho Fixo: Se a fila foi formada com 7 anões, ela tem 7 posições. Você não pode simplesmente adicionar um oitavo anão ou remover um do meio e esperar que a fila encolha. O tamanho de um array é definido em sua criação e não pode ser alterado. Para isso, usamos outras estruturas como
List<T>.Posições Começam do Zero (Índice Baseado em Zero): Esta é a regra mais importante! Para chamar um anão, você usa sua posição na fila, que sempre começa em 0. O primeiro anão está na posição
0, o segundo na posição1, e o último anão (o sétimo) está na posição6. O endereço do último elemento é sempretamanho - 1.
Por Dentro da Memória: Por que Arrays são Rápidos?
Quando você cria um array, o computador aloca um bloco contínuo de memória para ele. Pense nisso como reservar um trecho de uma prateleira, onde cada espaço tem exatamente o mesmo tamanho e todos estão um ao lado do outro.
Como todos os elementos são do mesmo tipo (e, portanto, têm o mesmo tamanho em bytes) e estão em sequência, o computador pode calcular a localização exata de qualquer elemento instantaneamente. Ele pega o endereço de memória do início do array e soma (índice * tamanho_do_elemento). É por isso que acessar meuArray[500] é tão rápido quanto acessar meuArray[0].
Declarando e Inicializando Arrays
Existem algumas maneiras de formar a "fila de anões".
1. Declarar e Definir o Tamanho (Valores Padrão)
Você pode primeiro declarar que terá uma fila de anões e definir seu tamanho. Cada anão na fila começará com um valor padrão, pois o espaço na memória é alocado e "zerado".
Valores Padrão Comuns:
Tipos numéricos (
int,double,decimal):0bool:falsechar:'\0'(caractere nulo)Tipos de referência (
string, objetos):null
2. Declarar e Inicializar com Valores
Você pode formar a fila e já definir quem estará em cada posição, tudo de uma vez.
Acessando e Modificando Elementos
Para falar com um anão ou trocar sua ferramenta, usamos sua posição (índice) entre colchetes [].
Percorrendo um Array (Iteração)
Para dar uma ordem a todos os anões na fila, usamos laços de repetição.
O Laço for (Controle Total)
O laço for é o capataz que anda pela fila, sabendo a posição de cada anão. Ele lhe dá acesso ao índice, o que é útil se você precisar saber a posição do elemento.
O Laço foreach (Simples e Seguro)
O foreach é mais como um anúncio geral. Ele passa por cada anão da fila, um de cada vez, sem que você precise se preocupar com a posição. É mais simples e evita o risco de um IndexOutOfRangeException.
Indo Além: Arrays Multidimensionais
E se os anões se organizassem não em uma fila, mas em um pátio, formando um retângulo? Para isso, temos os arrays multidimensionais. O mais comum é o 2D, que se parece com um tabuleiro de xadrez ou uma planilha.
Referências
Para se aprofundar, a documentação oficial da Microsoft é o melhor recurso:
Guia de Programação de Arrays (C#): O ponto de partida para tudo sobre arrays.
Arrays Multidimensionais: Guia específico para arrays com mais de uma dimensão.
Classe
System.Array: Documentação da classe base para todos os arrays, mostrando métodos úteis que você pode usar (comoSort,Reverse, etc.).