Oppure

Loading
30/04/11 18:13
Question
Ragazzi vorrei sapere quando conviene usare il blocco using e quando no, potreste spiegarmelo?
aaa
30/04/11 23:40
HeDo

il blocco using viene utilizzato per specificare al compilatore che "ci serve" un oggetto per tutta la durata del codice presente in quel blocco.

in particolare un oggetto creato con la clausola using deve implementare l'interfaccia IDisposable, ovvero quell'interfaccia che obbliga gli oggetti ad implementare un metodo Finalize responsabile del cleanup delle risorse.

msdn.microsoft.com/it-it/library/…
aaa
02/05/11 19:15
netarrow
Ma allora quando una procedura finisce il proprio lavoro o si verifica un'eccezione che ne impedisce il termine gli oggetti non vengono automaticamente distrutti?


Gli oggetti vengono automaticamente distrutti limitatamente alle risorse managed.
Un oggetto però può far riferimento a risorse non gestite, socket, file, oggetti COM etc.

Ora tu potresti fare la pulizia di queste risorse anche nel distruttore dell'oggetto, ma che verrà richiamato solo quando il garbage collector farà il suo giro; cosa non determinabile.

Quindi esponendo l'interfaccia IDisposable permetti al codice client di rilasciare le risorse non managed a comando richiamando il metodo Dispose.

Per arrivare al blocco using, è un zuccherino sintattico per evitare di dimenticarsi di richiamare il Dispose alla fine dell'esecuzione del codice sempre e comunque.

Quando il tuo codice usa modelli a oggetti che si basano pesantemente su risorse non gestite (e in particolare quando questi oggetti sono tanti) è importante non dimenticarsi di fare il Dispose per evitare dei memory leak, e quindi torna utile il blocco using.
aaa