Ders-12 OOP Özel Sınıf Elemanları

Destructor/Finalizer

Bir class’tan üretilmiş olan nesne imha edilirken otomatik çağrılan metottur. Nesne yok edilirken son kez nesne adına işlem yapabileceğimiz metottur. Nesne ram’den silinirken çalışır. C# programlama dilinde Destructor sace class yapılanmasında kullanılabilir ve bir class içerisinde yalnızca bir tane Destructor olabilir. Destructor parametre alamaz.

Bir nesne hangi şartlarda kim tarafından imha edilir?

İlgili nesne herhangi bir referans tarafndan işaretlenmiyorsun ilgili nesne imhaya yüz tutacaktır. Nesneya hiçbir yerden erişim yoksa, nesne eğer referansızsa Garbage Collector dediğimiz mekanızma tarafından yok edilecektir. nesnenin oluşturduğu ve kullanıldığı scope sone ermiş ise bu nesnede imhaya yüz tutacaktır. Yani anlaşılan ilgili nesneye hiçbir zaman erişilemez hale geldiyseniz nesne mimari tarafından imha edilir. İmha durumları bu gibi durumlardır. Bu nesneler Garbage Collector tarafından yokedilirler.

Garbage Collector (Çöp Toplayıcı)

İsmi, Ram’de bir daha kullanılmamak, erişilmemek üzere duran nesneler çöp diye nitelenir ve Garbage Collector’un bunları silmesinden gelir. Uygulamada lüzumsuz olan nesneleri toplamak için Garbage Collector isimli bir mekanizma devreye girer. Esasında Garbage Collector C#’da bellek optimizasyonunu üstlenen bir yapılanmadır. .Net de bellek optimizasyonu biz yazılımcılardan alınıp Garbage Collectorlara verilmiştir. Bu mekanizma kendi kafasına göre çalışan bir yapılanmadır, yazılımcıların mekanızmaya müdahale etmesi çok önerilmez. Garbage Collector heap’deki referanssız nesneleri imha ederken Destructor fonksiyonu devreye girer.

class MyClass()
{

   ~MyClass(){ //Destructor

   }

}

Destructor tanımlayabilmek için tilda(~) işareti kullanılır. Tilda ‘Alt+0126’ veya ‘AltGr+Ü sonrasında ile space’ tuş kombinasyonu ile yazılabilir.

Garbage Collector’u manuel olarak tetiklemek:

GC.Collect();

Bu komut ile Garbage Collector’u toplamaya davet ediyoruz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir