Como limpar os recursos não gerenciados em C # [duplicado]

Jan 20 2021

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 heredesejo que o aobjeto seja destruído ou descartado e liberando sua memória alocada.

Respostas

1 ispiro Jan 20 2021 at 03:55

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 ano seu exemplo, e irá liberar o espaço que elas usaram. Ele então verá que os componentes internos de atambé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 Disposeexplicitamente ou usar usingblocos para fazer isso. Você também pode implementar um finalizador que será executado quando afor descartado. Mas parece que não é sobre isso que você está perguntando.