Junior — Middle
Quelle est la différence entre l'interface IDisposable implémentée et le finaliseur dans les codes gérés C#?
sobes.tech IA
Réponse de l'IA
En C#, l'interface IDisposable et le finaliseur (finalizer) servent à libérer des ressources, mais fonctionnent différemment :
-
IDisposable est implémenté explicitement et fournit la méthode
Dispose(), qui est appelée manuellement ou via la constructionusing. Cela permet de libérer rapidement les ressources gérées et non gérées. -
Le finaliseur est une méthode appelée par le ramasse-miettes avant la destruction de l'objet, si
Dispose()n'a pas été appelé. Il sert de mécanisme de secours pour libérer les ressources non gérées, mais son moment d'exécution est indéfini.
Ainsi, IDisposable assure une libération déterministe des ressources, tandis que le finaliseur est non déterministe et plus coûteux en performance.