Cómo limpiar los recursos no administrados en C # [duplicado]
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 here
que quiero que el a
objeto sea destruido o eliminado y liberando su memoria asignada.
Respuestas
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 a
en su ejemplo, y liberará el espacio que usaron. Entonces verá que las a
partes 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 Dispose
explícitamente o usar using
bloques para hacerlo. También puede implementar un finalizador que se ejecutará cuando a
se elimine. Pero parece que no es eso por lo que preguntabas.