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ü veusing
yapısı tercih edilir.