Utilizzo della sintassi del distruttore in C# e nelle estensioni gestite per C++
Non è possibile sottoporre a override o chiamare il metodo Object.Finalize dal linguaggio di programmazione C# o dalle estensioni gestite per C++. C# e le estensioni gestite forniscono i distruttori come meccanismo per la scrittura di codice di finalizzazione. In C# e nelle estensioni gestite, per svolgere le operazioni di pulitura è necessario utilizzare la sintassi del distruttore. Tali sintassi è vantaggiosa perché chiama implicitamente il metodo Finalize della classe base di un oggetto. In tal modo si garantisce che Finalize venga chiamato per tutti i livelli di distruttori da cui la classe corrente deriva.
Nell'esempio che segue viene illustrato il codice di un distruttore.
~MyClass()
{
// Perform some cleanup operations here.
}
Tale codice viene implicitamente convertito nel codice che segue.
protected override void Finalize()
{
try
{
// Perform some cleanup operations here.
}
finally
{
base.Finalize();
}
}
Nota Benché appaiano simili, i distruttori di C# e delle estensioni gestite non adottano la stessa semantica dei distruttori non gestiti di C++. Il codice gestito non supporta nulla di simile alla semantica dei distruttori di C++.
Vedere anche
Pulitura delle risorse non gestite | Override del metodo Finalize | Metodo Object.Finalize | Riferimenti del linguaggio C# 1.7.9 Distruttori