int[] numeros = {5, 42, 8, 11, 23, 1, 14, 30, 19, 27, 36, 2, 50, 7, 18, 9};
Console.WriteLine($"Combinação: {Array.IndexOf(numeros, 19)}-{Array.IndexOf(numeros, 42)}-{Array.IndexOf(numeros, 7)}");
int[] numeros = {5, 42, 8, 11, 23, 1, 14, 30, 19, 27, 36, 2, 50, 7, 18, 9};
Console.WriteLine($"Combinação: {Array.IndexOf(numeros, 19)}-{Array.IndexOf(numeros, 42)}-{Array.IndexOf(numeros, 7)}");
Olá, Diego. Como vai?
Excelente post para desvendar o comportamento dos índices em um Array no C#! Esse tipo de exercício é ótimo para fixar como a estrutura de dados armazena e localiza os elementos na memória.
O método Array.IndexOf(numeros, valor) faz uma busca linear no array da esquerda para a direita e retorna a posição (índice) da primeira ocorrência do valor solicitado. Vale lembrar que no C#, assim como na maioria das linguagens de programação, os arrays possuem indexação baseada em zero, ou seja, o primeiro elemento está na posição 0, o segundo na posição 1, e assim por diante.
Fazendo o mapeamento do seu array, temos:
5 -> Índice 042 -> Índice 18 -> Índice 219 -> Está na 9ª posição (Índice 8)42 -> Está na 2ª posição (Índice 1)7 -> Está na 14ª posição (Índice 13)Portanto, a saída do seu código no console será exatamente:Combinação: 8-1-13
Para agregar ainda mais valor aos seus estudos sobre manipulação de Arrays, gostaria de compartilhar duas dicas e boas práticas importantes sobre o Array.IndexOf:
1. O que acontece se o número não existir?
Caso você passe para o método um valor que não está presente no array (por exemplo, o número 100), o Array.IndexOf retornará -1. Essa é uma convenção muito importante no C# para indicar que o elemento não foi encontrado, evitando que o seu programa quebre com um erro de índice fora dos limites (IndexOutOfRangeException).
2. Cenários de performance
O Array.IndexOf é excelente para arrays pequenos ou de tamanho moderado. Contudo, como ele precisa checar item por item (complexidade O(n)), se o seu array tiver milhões de registros e você precisar fazer buscas constantes, outras estruturas de dados como o Dictionary<TKey, TValue> ou o HashSet<T> (que você utilizou no outro tópico!) serão muito mais rápidas para encontrar elementos.
Parabéns por praticar a lógica de leitura de código, essa é uma habilidade fundamental no dia a dia de um desenvolvedor!
Espero que possa ter lhe ajudado!