Sobes.tech
Junior — Middle

Wat is het verschil tussen de geïmplementeerde IDisposable-interface en de finalizer in beheerde C#-code?

sobes.tech AI

Antwoord van AI

In C# dienen de interface IDisposable en de finalizer (finalizer) om resources vrij te maken, maar werken ze op verschillende manieren:

  • IDisposable wordt expliciet geïmplementeerd en biedt de methode Dispose(), die handmatig of via de using-constructie wordt aangeroepen. Dit maakt het mogelijk om beheerde en onbeheerde resources tijdig vrij te maken.

  • De finalizer is een methode die door de garbage collector wordt aangeroepen voordat het object wordt vernietigd, als Dispose() niet is aangeroepen. Het dient als een back-up mechanisme voor het vrijmaken van onbeheerde resources, maar het tijdstip van aanroep is onbepaald.

Hierdoor zorgt IDisposable voor deterministische vrijgave van resources, terwijl de finalizer niet-deterministisch is en meer prestatiekosten met zich meebrengt.