come faccio a sapere in modo specifico quali classi devono essere smaltite?
In breve, GC
in Windows, alcuni potrebbero argomentare .NetFx
, gestirà la gestione delle risorse e la sua durata nel sistema. In breve, non devi preoccuparti di gestirlo in .Net
come fai nella sfera non gestita (C, C ++, ecc.)
In generale, gli oggetti che implementano IDisposable
hanno la propensione a consumare grandi quantità di risorse (CPU, RAM, HDD, ecc.). Pertanto, lo sviluppatore ha deciso di estendere l'interfaccia IDisposable
per fornire manualmente la logica per sbarazzarsi di quei maiali delle risorse.
Come punto di chiarimento, l'istruzione using
è più una parola chiave zucchero sintattica per try...finally
. Ci sono più coraggio e gloria dietro la logica dell'istruzione using
ma tutto si riduce a try..finally
; come una parola di full-disclosure, using
statement non implementa catch
, questo è tutto per te.
Esiste una regola empirica generale o ispezioni le definizioni di classe per vedere se gestiscono in qualche modo risorse non gestite?
Ancora una volta, qualsiasi "oggetto" creato eredita di default Object
. Ecco come .Net diventa efficacemente un'utilità gestita. Anche se non definisci un'ereditarietà esplicita su Object
, il compilatore lo rende ereditario Object
.
Le uniche risorse di cui devi preoccuparti sono le librerie non verificate di terze parti (DLL). Se provi ad allegarlo a un progetto .Net, urlerà "maledetto omicidio" a te finché non lo sistemerai correttamente.