Destructor kısaca constructor'ın tam tersidir.Constructor için bir nesnenin instance'ı alınırken Ram'de ki Heap bölümünde yer ayırmadan önce çağrılan metod diyebiliriz. Destructor tam bu nesne ram'den silinmeden önce çağrılan metod dur.
Peki neden buna gerek var dersek; garbage collector sağ olsun bizim için ram'de işleri bitmiş nesneleri ram'den siliyor ve bazen tam bu silinme anını bilmek isteriz. Aslında C# tarafında çok fazla ihtiyaç duyulan bir şey değil ancak C-C++ gibi Ram yönetimini developer'a bırakan programlama dillerinde Destructor'a çok fazla ihtiyaç duyuluyordu. C# ram yönetimini tamamiyle developer'a bırakmadığından gerek kalmadıkça bu metodu kullanmıyoruz.
Destructor Özellikleri
- Her class'ın sadece bir tane Destructor'ı olabilir,
- Destructor tanımlanırken class ismini başına "~" işareti koyulur,
- Struct'lar için tanımlanamaz, sadece class'lar için tanımlanırlar,
- Dışarıdan çağrılamaz, otomatik olarak invoke olur,
- Destructor parametre alamaz.
- Kalıtım yapılamazlar ve overload edilemezler.
Örnek kullanım olarak;
class Person
{
~Person() // destructor
{
// cleanup statements...
}
}
Kullanımı yukarıda olduğu gibidir. Yazım olarak Constructor tanımlar gibi yazıyoruz ancak isminin başına "~" işaretini koyuyoruz.