Como limpar os recursos não gerenciados em C # [duplicado]
Eu tenho esta aula:
public class A
{
//Some logic code here
}
Minha pergunta é como posso descartar ou destruir qualquer objeto criado com base nesta classe depois de sair do escopo?
Por exemplo:
A a = new A();
//some code here
após o //some code here
desejo que o a
objeto seja destruído ou descartado e liberando sua memória alocada.
Respostas
Vou ignorar o título e me concentrar no corpo da pergunta, pois parece evidente a partir dela qual é o problema.
A resposta curta: você não. Isso será feito automaticamente pelo coletor de lixo quando julgar necessário. (Você não precisa executar o coletor de lixo. Isso acontece automaticamente.)
O coletor de lixo então procura entidades que saíram do escopo, como a
no seu exemplo, e irá liberar o espaço que elas usaram. Ele então verá que os componentes internos de a
também, obviamente, saíram do escopo (a menos que sejam referenciados em outro lugar em seu código) e os manipulará.
Dito isso, quando você usa variáveis de classes que implementam Dispose
, é melhor chamar Dispose
explicitamente ou usar using
blocos para fazer isso. Você também pode implementar um finalizador que será executado quando a
for descartado. Mas parece que não é sobre isso que você está perguntando.