Utilizzo di oggetti che incapsulano risorse
Quando si scrive codice che utilizza un oggetto che incapsula una risorsa, è necessario accertarsi che al termine dell'utilizzo dell'oggetto venga chiamato il relativo metodo Dispose. A tale scopo, è possibile utilizzare l'istruzione using di C# o implementare un blocco try/finally in altri linguaggi per Common Language Runtime.
Istruzione using di C#
L'istruzione using del linguaggio di programmazione C# chiama il metodo Dispose adottando un automatismo più evoluto, semplificando così il codice che occorre scrivere per creare e pulire un oggetto. L'istruzione using ottiene una o più risorse, esegue le istruzioni specificate, quindi elimina l'oggetto. Si noti che l'istruzione using può essere utilizzata solo per oggetti la cui durata che non eccede quella del metodo in cui gli oggetti vengono costruiti. Nell'esempio di codice riportato di seguito viene creata e pulita un'istanza della classe ResourceWrapper, come illustrato nell'esempio in C# in Implementazione di un metodo Dispose.
class myApp
{
public static void Main()
{
using (ResourceWrapper r1 = new ResourceWrapper())
{
// Do something with the object.
r1.DoSomething();
}
}
}
Il codice precedente, che utilizza l'istruzione using, è equivalente a quello che segue.
class myApp
{
public static void Main()
{
ResourceWrapper r1 = new ResourceWrapper();
try
{
// Do something with the object.
r1.DoSomething();
}
finally
{
// Check for a null resource.
if (r1 != null)
// Call the object's Dispose method.
r1.Dispose();
}
}
}
Con una singola istruzione using di C# è possibile ottenere più risorse, mediante un meccanismo che equivale internamente all'utilizzo di più istruzioni using annidate. Per ulteriori informazioni e un esempio di codice, vedere Istruzione using (Riferimenti per C#).
Blocco Try/Finally
Quando si scrive codice gestito che utilizza un oggetto che incapsula una risorsa di un linguaggio diverso da C#, utilizzare un blocco try/finally per assicurarsi che venga eseguita una chiamata al metodo Dispose dell'oggetto. Nell'esempio di codice riportato di seguito viene creata e pulita un'istanza della classe Resource, come illustrato nell'esempio in Visual Basic in Implementazione di un metodo Dispose.
class myApp
Public Shared Sub Main()
Resource r1 = new Resource()
Try
' Do something with the object.
r1.DoSomething()
Finally
' Check for a null resource.
If Not (r1 is Nothing) Then
' Call the object's Dispose method.
r1.Dispose()
End If
End Try
End Sub
End Class
Vedere anche
Riferimenti
Istruzione using (Riferimenti per C#)