pour ce qui est de dispose, .net intègre 2 types de choses en ram, ce qui est managé et non managé
managé = géré par .net (par la clr plus exactement)
managé :
un string, un integer, une collection, une classe contenant que des types managés etc...
ces choses là quand tu les utilises plus, elles sont marqués comme plus utilisés et le garbage collector (appelé GC) effacera la mémoire qu'ils prenaient automatiquement (mais pas immédiatement)
non managé :
certaines classes utilisent des choses non managés comme les controles, les forms, les connexions aux bases de données, les images, fonts, brushes etc ...
les images par exemple (system.Drawing.image, system.Drawing.bitmap ...) ne sont que des pointeurs vers des images gérées par l'OS
donc ces classes implémentent l'interface IDisposable et la méthode Dispose
quand tu instancies une image, ca appelle une dll de windows pour lui dire de créée l'image et son espace mémoire
quand tu appelles la méthode dispose, ca appelle une dll de windows qui libère (immédiatement) la mémoire gérée par l'OS (une partie de la mémoire de ces classes est quand meme gérée par .net comme les propriété width et height, c'est le GC qui s'en occupe)
les connexions c'est pareil, c'est pas codé en .net mais en COM
(pour info une grosses partie du framework est codée en .net, le reste c'est souvent de l'appell d'API (= dll de windows))
si tu oublies d'appeler dispose, le GC le fera mais c'est quand meme conseillé de le faire soi meme
Partager