Cómo limpiar los recursos no administrados en C # [duplicado]

Jan 20 2021

Tengo esta clase:

    public class A
    {
//Some logic code here
    }

Mi pregunta es ¿cómo puedo eliminar o destruir cualquier objeto creado en base a esta clase después de salir del alcance?

Por ejemplo:

  A a = new A();
    //some code here

después de //some code hereque quiero que el aobjeto sea destruido o eliminado y liberando su memoria asignada.

Respuestas

1 ispiro Jan 20 2021 at 03:55

Ignoraré el título y me concentraré en el cuerpo de la pregunta, ya que parece evidente a partir de la pregunta cuál es el problema.

La respuesta corta: no es así. Esto será atendido automáticamente por el recolector de basura cuando lo considere necesario. (No es necesario ejecutar el recolector de basura. Eso ocurre automáticamente).

El recolector de basura luego busca entidades que han salido del alcance, como aen su ejemplo, y liberará el espacio que usaron. Entonces verá que las apartes internas de también, obviamente, han salido del alcance (a menos que se mencionen en otra parte de su código), y las manejará.

Habiendo dicho eso, cuando usa variables de clases que implementan Dispose, es mejor llamar Disposeexplícitamente o usar usingbloques para hacerlo. También puede implementar un finalizador que se ejecutará cuando ase elimine. Pero parece que no es eso por lo que preguntabas.