Questão FC373314
Considere o programa em C# abaixo. Ao ser executado em condições ideais, o programa imprimirá:
Linguagens de Programação
FCC · 2022
Considere o programa em C# abaixo.

Ao ser executado em condições ideais, o programa imprimirá:
- null
- Dentro da ClasseTeste
Finalizando
- Dentro da ClasseTeste
- Dentro da ClasseTeste
null
- Dentro da ClasseTeste
Finalizando
null
Mostrar resposta e comentário
Gabarito
B
Comentário do professor
A saída é exatamente:
Dentro da ClasseTeste
Finalizando, nessa ordem.
Ao executar new Teste() o código chama o construtor da classe, que escreve Dentro da ClasseTeste no console imediatamente.
O segundo texto vem do destrutor (finalizer, declarado como ~Teste()), que escreve Finalizando. Em C# o destrutor é invocado pelo coletor de lixo, não diretamente pelo programador.
Como o programa atribui a referência a null e em seguida chama GC.Collect() e GC.WaitForPendingFinalizers(), o finalizador é forçado a rodar antes do término, garantindo a impressão da segunda linha. Sem essas chamadas, a execução do destrutor não seria garantida de forma determinística.
Conteúdo do catálogo FC Concursos · Atualizado em