Olá, Eduardo. Como vai?
Excelente código! Sua resolução está totalmente correta e demonstra que você compreendeu com muita clareza a mecânica do método Array.IndexOf().
A sua lógica para encontrar os índices dos números 19, 42 e 7 dentro do array numeros funcionou perfeitamente. Como o C# utiliza a indexação baseada em zero (onde o primeiro elemento começa na posição 0), o computador varre o array e encontra com precisão as posições corretas para desvendar a combinação do cadeado.
Para enriquecer o seu projeto e expandir os seus conhecimentos sobre a manipulação de estruturas indexadas, separei duas dicas técnicas bem importantes sobre o comportamento desse método no dia a dia:
1. Cuidados com Elementos Duplicados
O método Array.IndexOf() faz uma busca linear no array começando do início (índice 0) e indo em direção ao fim. Um detalhe fundamental que você deve levar em conta em projetos reais é que ele sempre retorna apenas a posição da primeira ocorrência encontrada.
Se o seu array de números contivesse duas vezes o número 42 (por exemplo, na segunda posição e na última), o Array.IndexOf(numeros, 42) ainda assim retornaria o índice 1, ignorando completamente a existência do segundo número repetido.
- Dica de ouro: Caso você precise buscar um elemento de trás para frente (começando do final do array), o C# disponibiliza o método gêmeo
Array.LastIndexOf(numeros, 42).
2. O que acontece se o número não existir?
No seu desafio, todos os números procurados estavam presentes no array. Mas o que aconteceria se você tentasse buscar a posição de um número que não faz parte da lista, como o número 99?
int numeroInexistente = Array.IndexOf(numeros, 99);
Console.WriteLine(numeroInexistente); // O console vai imprimir: -1
Quando o Array.IndexOf() varre toda a coleção e não encontra o valor solicitado, ele retorna o valor padrão -1. Na programação, tratar esse retorno é uma excelente prática para evitar que o seu sistema tente acessar índices inválidos e acabe quebrando.
Em um cenário real, você poderia proteger o seu código usando uma estrutura condicional simples:
int indice = Array.IndexOf(numeros, 19);
if (indice != -1)
{
Console.WriteLine($"Número encontrado na posição: {indice}");
}
else
{
Console.WriteLine("O número informado não pertence ao array.");
}
Parabéns por mais essa entrega impecável e por dominar com tanta consistência o uso e a lógica dos arrays em C#!
Espero que possa ter lhe ajudado!