Arrays em C#: o inventário do seu programa (guia para iniciantes)
- Gerar link
- X
- Outros aplicativos

Resumo rápido
- Um array guarda vários valores do mesmo tipo numa única variável.
- O tamanho é definido na criação e não muda depois.
- As posições (índices) começam em 0: o último é
Length - 1. - Acessar uma posição que não existe gera
IndexOutOfRangeException. - Para percorrer, use
for(quando precisa do índice) ouforeach.
Num jogo de sobrevivência, você não carrega uma variável para cada item. Você tem uma maleta com compartimentos. No C#, essa maleta é o array: uma variável que guarda vários valores do mesmo tipo, lado a lado.
Este post usa laços para percorrer o array. Se ainda não viu, comece por Laços de repetição em C#.
Criando um array
Existem duas formas comuns. Quando você já sabe os itens, liste entre chaves. Quando só sabe o tamanho, use new.
C#
// Com os itens já definidos
string[] maleta = { "pistola", "erva verde", "granada", "faca" };
// Só com o tamanho: 3 compartimentos, todos começam com 0
int[] municaoPorArma = new int[3];
Console.WriteLine($"A maleta tem {maleta.Length} itens.");
Console.WriteLine($"Munição da primeira arma: {municaoPorArma[0]}");
Saída esperada
A maleta tem 4 itens.
Munição da primeira arma: 0
Os colchetes [] depois do tipo dizem "isto é um array de". Um int[] só aceita int; um string[] só aceita string.
Índices: o compartimento começa no zero

Cada item fica numa posição numerada, chamada índice. E aqui está a pegadinha de todo iniciante: o primeiro índice é 0, não 1.
| Índice | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| maleta[índice] | pistola | erva verde | granada | faca |
Com 4 itens, os índices vão de 0 a 3. Por isso o último item está sempre em Length - 1.
Lendo e trocando itens
Para ler ou alterar um item, use o nome do array e o índice entre colchetes:
C#
string[] maleta = { "pistola", "erva verde", "granada", "faca" };
Console.WriteLine($"Primeiro item: {maleta[0]}");
Console.WriteLine($"Último item: {maleta[maleta.Length - 1]}");
// Usou a granada e pegou uma lanterna no lugar
maleta[2] = "lanterna";
Console.WriteLine($"Agora o compartimento 2 tem: {maleta[2]}");
Saída esperada
Primeiro item: pistola
Último item: faca
Agora o compartimento 2 tem: lanterna
O erro mais comum: passar do fim

Tentar usar um índice que não existe derruba o programa com IndexOutOfRangeException:
C#
string[] maleta = { "pistola", "erva verde", "granada", "faca" };
Console.WriteLine(maleta[4]); // não existe compartimento 4!
Saída esperada
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
⚠️ Em laços, use i < maleta.Length e nunca i <= maleta.Length. O <= tenta ler uma posição a mais e cai exatamente nesse erro.
Percorrendo o array
Use for quando precisa saber a posição de cada item, e foreach quando só quer cada item:
C#
string[] maleta = { "pistola", "erva verde", "granada" };
for (int i = 0; i < maleta.Length; i++)
{
Console.WriteLine($"[{i}] {maleta[i]}");
}
int[] municao = { 12, 0, 6 };
int total = 0;
foreach (int balas in municao)
{
total += balas;
}
Console.WriteLine($"Total de munição: {total}");
Saída esperada
[0] pistola
[1] erva verde
[2] granada
Total de munição: 18
Procurando um item
Para saber se algo está na maleta, o C# já tem pronto o Array.IndexOf. Ele devolve o índice do item, ou -1 se não encontrar:
C#
string[] maleta = { "pistola", "erva verde", "granada" };
int posicao = Array.IndexOf(maleta, "erva verde");
if (posicao >= 0)
{
Console.WriteLine($"Erva verde no compartimento {posicao}.");
}
else
{
Console.WriteLine("Sem erva verde. Cuidado!");
}
Saída esperada
Erva verde no compartimento 1.
E se a maleta precisar crescer?
O array tem tamanho fixo: depois de criado com 4 compartimentos, ele terá 4 para sempre. Quando você precisa adicionar e remover itens à vontade, use uma List<string>, que cresce sozinha. Ela é o assunto do post List, Dictionary e HashSet em C#.
DESAFIO
Tente resolver antes de abrir a resposta. Sobreviveu? Vá para o próximo.
Num array com 6 itens, qual é o índice do último?
Ver resposta
5, porque os índices vão de 0 a
Length - 1.Crie um array
int[] danos = { 10, 40, 60 };e mostre o maior dano usando um laço.Ver resposta
int[] danos = { 10, 40, 60 }; int maior = danos[0]; foreach (int d in danos) { if (d > maior) maior = d; } Console.WriteLine(maior); // 60O que está errado aqui?
for (int i = 0; i <= maleta.Length; i++)Ver resposta
O
<=faz o laço tentar lermaleta[maleta.Length], que não existe, e o programa para comIndexOutOfRangeException. O certo éi < maleta.Length.
Conclusão
Agora você sabe criar a maleta, acessar cada compartimento pelo índice, trocar itens, percorrer tudo e escapar do erro de índice fora do limite. Com operadores, decisões, laços e arrays, você já tem as ferramentas para escrever seus primeiros programas completos em C#.
📖 Próximo passo: List, Dictionary e HashSet em C#.
Comentários
Postar um comentário