C# Yapıcı ve Yıkıcı Metotlar

C# programlama dilinde, yapıcı (constructor) ve yıkıcı (destructor) metotlar, bir sınıfın nesnesi oluşturulduğunda veya yok edildiğinde kullanılan özel metotlardır. Bu metotlar, sınıfın çalışma mantığını düzenlemek ve kaynak yönetimini kolaylaştırmak için oldukça faydalıdır. İşte bu metotlara dair detaylı bir açıklama ve örnekler:


1. Yapıcı Metot (Constructor)

Yapıcı metot, bir sınıfın nesnesi oluşturulduğunda çalışan özel bir metottur.

  • Sınıfın adıyla aynı ismi taşır.
  • Geri dönüş tipi (return type) yoktur.
  • Nesnenin başlangıç değerlerini atamak için kullanılır.

Temel Özellikler

  • Varsayılan olarak bir sınıfta gizli bir yapıcı metot bulunur.
  • Aşırı yükleme (overloading) yapılabilir.

Örnek: Yapıcı Metot Tanımı

class Araba
{
    public string Marka;
    public int Yil;

    // Yapıcı metot
    public Araba(string marka, int yil)
    {
        Marka = marka;
        Yil = yil;
    }

    public void BilgiYazdir()
    {
        Console.WriteLine($"Marka: {Marka}, Yıl: {Yil}");
    }
}

// Kullanım
Araba araba = new Araba("Toyota", 2023);
araba.BilgiYazdir(); // Çıktı: Marka: Toyota, Yıl: 2023


2. Yıkıcı Metot (Destructor)

Yıkıcı metot, bir nesne yok edildiğinde çalışan özel bir metottur.

  • Sınıfın adıyla aynı olup, başında ~ işareti bulunur.
  • Geri dönüş tipi yoktur ve parametre almaz.
  • Kaynakların serbest bırakılması (örneğin, dosya kapatma veya bellek temizleme) için kullanılır.
  • Garbage Collector (Çöp Toplayıcı) tarafından çağrılır.

Örnek: Yıkıcı Metot Tanımı

class Araba
{
    public string Marka;

    public Araba(string marka)
    {
        Marka = marka;
        Console.WriteLine($"{Marka} oluşturuldu.");
    }

    // Yıkıcı metot
    ~Araba()
    {
        Console.WriteLine($"{Marka} yok edildi.");
    }
}

// Kullanım
Araba araba = new Araba("BMW");
// Yıkıcı metot, Garbage Collector tarafından çağrılır.


3. Yapıcı Metot Türleri

a. Parametresiz Yapıcı

Eğer sınıf içinde bir yapıcı metot tanımlamazsanız, varsayılan olarak parametresiz yapıcı kullanılır.

class Ornek
{
    public Ornek()
    {
        Console.WriteLine("Varsayılan yapıcı çalıştı.");
    }
}

Ornek o = new Ornek(); // Çıktı: Varsayılan yapıcı çalıştı.

b. Parametreli Yapıcı

Nesneye özel değerler atanmasını sağlar.

class Ornek
{
    public int Deger;

    public Ornek(int deger)
    {
        Deger = deger;
    }
}

Ornek o = new Ornek(10);
Console.WriteLine(o.Deger); // Çıktı: 10

c. Statik Yapıcı

  • static anahtar kelimesi ile tanımlanır.
  • Sınıfın ilk kullanımı sırasında bir defa çalışır.
  • Sadece statik üyeler üzerinde işlem yapar.
class Ornek
{
    static Ornek()
    {
        Console.WriteLine("Statik yapıcı çalıştı.");
    }
}

Ornek o = new Ornek(); // Çıktı: Statik yapıcı çalıştı.


4. Yapıcı ve Yıkıcı Metotların Faydaları

  • Yapıcı Metotlar:
    • Nesnelerin düzgün bir şekilde başlatılmasını sağlar.
    • Gereksiz kod tekrarını engeller.
  • Yıkıcı Metotlar:
    • Kaynakların doğru şekilde serbest bırakılmasını sağlar.
    • Bellek yönetimini kolaylaştırır.

5. Örnek: Yapıcı ve Yıkıcı Metot Birlikte Kullanımı

class VeriTabani
{
    public string Baglanti;

    // Yapıcı metot
    public VeriTabani(string baglanti)
    {
        Baglanti = baglanti;
        Console.WriteLine($"Bağlantı açıldı: {Baglanti}");
    }

    // Yıkıcı metot
    ~VeriTabani()
    {
        Console.WriteLine($"Bağlantı kapatıldı: {Baglanti}");
    }
}

VeriTabani db = new VeriTabani("SQL Server");
// Yıkıcı metot, nesne yok edilirken otomatik olarak çağrılır.


6. İpuçları

  • Yıkıcı metotların ne zaman çalıştırılacağı, Garbage Collector tarafından belirlenir. Bu yüzden yıkıcı metotları doğrudan çağırmak mümkün değildir.
  • Kaynak yönetimi için genellikle IDisposable arayüzü ve using yapısı tercih edilir.

Leave a Reply

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