~Finalizer versus Finalize()
Beschreibungen des Finalizer in C# weisen in der Regel darauf hin, dass es sich dabei um eine normale Methode handelt - die aber zwingend die Finalize() Methode der Basis Klasse aufrufen muss.
public class Foo
{
protected void Finalize()
{
base.Finalize();
}
}
Wird der Finalizer jedoch im Stile eines C++ Destruktors geschrieben erfolgt der Aufruf des Finalizers der Basisklasse automatisch.
public class Foo
{
// Selber Name wie die Klasse und mit dem Prefix ~(Tilde)
~Foo(){}
}
C# Destruktoren:
- Werden nicht vererbt und daher auch nicht überladen werden
- Leere Parameterliste
- Keine Zugriffsbestimmung
- Impliziter Rückgabewert ist void