C# Finalizers are not destructors and Dispose is not a pattern
Nuestro buen amigo Javier Caceres nos comparte su artículo:
The terms Finalizers, Destructors and Dispose methods are used interchangeably making developers ignore their proper usage. Managed environments can clean-up most of the RAM memory you use, except for unmanaged resources, so here is where Finalizers and Dispose methods come into play.
This native-managed impedance mismatch has led engineers think that all the “cleaning code” is created and called automatically. The fact that unmanaged resources are basic building blocks so it’s important to underline their differences and oversee their correct usage. Simply put, Finalizers are implicit resource clean up, which means that your write the Finalize method and the Garbage Collector will probably call it. Finalizers use destructors’ syntax, so we can not call them directly.
Finalizers work well within managed environments, but while working with unmanaged resources you need to clean up resources exactly when you finish using them to improve performance. Having into account that our applications use databases, files and other resources it’s important to know how to do it.
Ver más aquí.
Fernando García Loera (Community Program Manager – Latin America Region)