FC ConcursosFC Concursos

Questão FC373321

Um Auditor está trabalhando junto com uma equipe de desenvolvimento de uma aplicação em C#, que necessita de uma estrutura capaz de armazenar diversos objetos de um tipo de classe

Linguagens de Programação

FCC · 2018

Um Auditor está trabalhando junto com uma equipe de desenvolvimento de uma aplicação em C#, que necessita de uma estrutura capaz de armazenar diversos objetos de um tipo de classe específico, de tal forma que seja facilitada a adição, consulta e remoção de elementos. Para tal, a equipe optou pelo uso da lista abaixo.


List<Pessoa> lista = new List<Pessoa>();
Pessoa p1 = new PessoaJuridica();
Pessoa p2 = new PessoaFisica();
Pessoa p3 = new PessoaJuridica();
lista.Add(p1);
lista.Add(p2);
lista.Add(p3);


Para percorrer os elementos desta lista obtendo cada objeto do tipo Pessoa, utiliza-se o comando

  1. foreach (Pessoa p in lista) { }
  2. for(int indice=0; indice<=lista.Length(); indice++){lista.Get(Pessoa p);}
  3. while(Pessoa p from lista) { }
  4. for(int i=1; i<=lista.Length(); i++) {List.GetAt(Pessoa p);}
  5. foreach(Get Pessoa in lista) { }
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

foreach (Pessoa p in lista) { } percorre cada elemento da coleção declarada como List<Pessoa> atribuindo-o, a cada iteração, à variável p. A leitura pode ser feita como "para cada Pessoa em lista", o que torna o código claro e conciso.

Internamente o foreach usa a interface IEnumerable da List: obtém um enumerador (GetEnumerator), avança com MoveNext e recupera o item atual via Current. Isso elimina a necessidade de manipular índices e reduz riscos de erro.

Como a lista é de Pessoa, ela aceita instâncias de classes derivadas (polimorfismo) e a variável p recebe cada objeto já no tipo esperado, sem casts explícitos, preservando segurança de tipo em tempo de compilação.

Como alternativa funcional, a List fornece o método ForEach(Action<T>), mas foreach segue sendo a forma idiomática e direta para iteração.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo