Condividi tramite


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