1
resposta

Desvendando o código

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)}");
1 resposta

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:

  • Elemento 5 -> Índice 0
  • Elemento 42 -> Índice 1
  • Elemento 8 -> Índice 2
  • ... e seguindo a contagem, encontramos os números que você buscou:
  • Elemento 19 -> Está na 9ª posição (Índice 8)
  • Elemento 42 -> Está na 2ª posição (Índice 1)
  • Elemento 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!