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
- foreach (Pessoa p in lista) { }
- for(int indice=0; indice<=lista.Length(); indice++){lista.Get(Pessoa p);}
- while(Pessoa p from lista) { }
- for(int i=1; i<=lista.Length(); i++) {List.GetAt(Pessoa p);}
- 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