?Qué significa finalizar?
Finalizar es un método de objeto que contiene el código necesario para liberar recursos no gestionados y realizar operaciones de limpieza antes de la recogida de basura (GC).
El método finalizar se utiliza para limpiar recursos no gestionados por .NET. Aunque el marco .NET está dise?ado para liberar recursos gestionados realizando implícitamente tareas de gestión de memoria, los recursos no gestionados de la aplicación -como los manejadores de archivos y las conexiones a bases de datos– deben liberarse explícitamente.
Definición de finalizar
Mientras que finalizar está dise?ado para ser llamado implícitamente por GC, el método dispose puede ser llamado explícitamente por el código de usuario para liberar recursos.
Finalizar es similar a los destructores tradicionales de C++, ya que cada uno es responsable de liberar los recursos del objeto. Los destructores C++ se ejecutan inmediatamente cuando un objeto sale del ámbito, mientras que finalizar se llama durante la limpieza del objeto en GC.
En C#, finalizar no puede invocarse directamente ni anularse. Si se declara un destructor, se convierte en el método finalizar cuando se compila el programa.
Durante la finalización, debe evitarse la asignación de memoria o la llamada a métodos virtuales. El ámbito de finalize debe estar protegido para que sólo se pueda acceder a él dentro de la misma clase o de su clase derivada.
Finalizar no debe hacer referencia a ningún otro objeto. En C#, llamar a finalizar directamente a un objeto que no sea su clase base es una operación inválida. El código de finalización debe ser mínimo, sin llamadas capaces de bloquear el subproceso de llamada.
Como la llamada a finalizar la realiza un subproceso dedicado, su código no debe utilizar almacenamiento local de subprocesos ni ninguna técnica que requiera afinidad de subprocesos.
Es esencial utilizar finalizar como mecanismo alternativo para liberar memoria o recursos no gestionados, debido a la falta de determinismo y a los efectos sobre el rendimiento de la GC.