Questão nº 36
Questão de Tecnologia da Informação · FCC TRT17 2022 (nº 36)
Considere o programa em C# abaixo.
```csharp
using System;
class ClasseTeste {
public ClasseTeste() {
Console.WriteLine("Dentro da ClasseTeste");
}
~ClasseTeste() {
Console.WriteLine("Finalizando");
}
}
class Teste{
static void Main() {
ClasseTeste obj = new ClasseTeste();
obj = null;
}
}
```
Ao ser executado em condições ideais, o programa imprimirá:
- A`null`
- B```
Dentro da ClasseTeste
Finalizando
``` (alternativa correta) - C`Dentro da ClasseTeste`
- D```
Dentro da ClasseTeste
null
``` - E```
Dentro da ClasseTeste
Finalizando
null
```
Resposta comentada
Gabarito Alternativa B
Em C#, o construtor é executado no momento da criação de um objeto, enquanto o finalizador (ou destrutor) é chamado pelo Coletor de Lixo (Garbage Collector - GC) antes da memória do objeto ser liberada, mas em um momento não determinístico.
- (A) Incorreta: A palavra
nullnão é impressa por nenhum comandoConsole.WriteLineno código. - (B) Correta: Primeiro, o construtor
ClasseTeste()é chamado quandonew ClasseTeste()é executado, imprimindo "Dentro da ClasseTeste". Em seguida,obj = null;torna o objeto elegível para coleta de lixo. Em "condições ideais" para um programa simples como este, o Coletor de Lixo geralmente é executado antes do término da aplicação para finalizar objetos, chamando o finalizador~ClasseTeste()e imprimindo "Finalizando". - (C) Incorreta: Esta alternativa ignora a execução do finalizador. Embora o Coletor de Lixo seja não determinístico, em "condições ideais" para um programa curto que termina, o GC geralmente tem tempo para chamar os finalizadores dos objetos elegíveis antes do processo ser encerrado. A armadilha aqui é pensar que o finalizador nunca será chamado por causa da não-determinismo do GC, mas na prática, em cenários simples, ele é executado.
- (D) Incorreta: A palavra
nullnão é impressa por nenhum comandoConsole.WriteLineno código. - (E) Incorreta: A palavra
nullnão é impressa por nenhum comandoConsole.WriteLineno código.
Fonte: FCC TRT17 2022 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.