İpucu

Merhabalar;

 

Herkes  using kullanarak oluşturdukları nesnenin işi bittiğinde bellekten yıkılacağını ancak IDisposible interface'ini haliyle de Dispose metodunu kodlamaları gerektiğini biliyordur. Peki Her oluşturduğumuz nesne için bunu yapmak biraz fazladan kod yazma gereksinimi anlamına gelmiyor mu?

Biz bunu bir Base sınıfa yazıp, kullandığımız sınıflarıda Object yerine bu sınıftan kalıtım alsak? Class diagram uzerinden bakalim.

 

Abstract class içine 2 satır kod yazdık.

    public abstract class BaseObject : IDisposable
    {
        public void Dispose()
        {
            GC.SuppressFinalize(this);
            GC.Collect();
        }
    }

 

uygulama sınıfından da using ile bu nesneyi kullanıyoruz.

    public class Uygulama
    {
        static void Main(string[] args)
        {
            using (Nesne nes=new Nesne())
            {
                
            }
        }
    }

 

Nesne sınıfı Operasyon sınıfı veya Entity sınıfı tamamı IDisposable sınıfını impemente eden BaseObject sınıfından türediği için aslında Dispose metoduna sahip. Dolayısıyla using içinde kullanırken derleyici bize kızmıyor.

 

Yeni bir ipucunda görüşmek üzere.

 

Ertuğrul KARA

Yazılım Uzmanı