C# (C Sharp) Ders 20 – Nesne Yönelimli Programlama (OOP) – Delegeler (Delegates), Olaylar (Events) ve Generic’ler (Generics)

Delegeler (Delegates) ve Olaylar (Events): Metotları Referans Olarak Saklama, Olay Tabanlı Programlama

  • Delegeler (Delegates): bir metot grubunu temsil eden türlerdir. Metotları referans olarak saklamak için kullanılır. delegate anahtar kelimesiyle tanımlanır.
C#
public delegate void MyDelegate(string mesaj); // Delegate tanımı

public class MesajGonderici
{
    public void GosterMesaj(string mesaj)
    {
        Console.WriteLine("Mesaj: " + mesaj);
    }
}

// Kullanım:
MesajGonderici gonderici = new MesajGonderici();
MyDelegate delegateObjesi = new MyDelegate(gonderici.GosterMesaj); // Metot referansı saklama
delegateObjesi("Merhaba Dünya!"); // Delegate aracılığıyla metot çağrılır

Olaylar (Events): bir nesnenin durumunun değiştiğini bildirmek için kullanılır. Olay tabanlı programlamayı destekler.

C#
public class Buton
{
    public event EventHandler Tiklama; // Olay tanımı

    public void Tıkla()
    {
        // ... butonun tıklama mantığı ...
        if (Tiklama != null) // Olay dinleyicisi varsa
        {
            Tiklama(this, EventArgs.Empty); // Olayı tetikle
        }
    }
}

// Kullanım:
Buton buton = new Buton();
buton.Tiklama += (sender, e) => Console.WriteLine("Butona tıklandı!"); // Olay dinleyicisi ekleme

Generic’ler (Generics): Tür Güvenli Koleksiyonlar Oluşturma, T ile Tür Parametreleri

Generic’ler (Generics), farklı veri türleriyle çalışabilen sınıflar, metotlar ve arayüzler oluşturmak için kullanılır. T ile tür parametreleri belirtilir.

Kullanım Alanları: Tür güvenli koleksiyonlar oluşturmak, kod tekrarını önlemek ve performans artırmak için kullanılır.

C#
public class Kutu<T> // Generic sınıf tanımı
{
    public T Icerik { get; set; }

    public void Yazdir()
    {
        Console.WriteLine("İçerik: " + Icerik);
    }
}

// Kullanım:
Kutu<int> intKutu = new Kutu<int>(); // int türünde kutu oluşturma
intKutu.Icerik = 10;
intKutu.Yazdir();

Kutu<string> stringKutu = new Kutu<string>(); // string türünde kutu oluşturma
stringKutu.Icerik = "Merhaba";
stringKutu.Yazdir();

Kaynak: https://learn.microsoft.com/tr-tr/dotnet/csharp/tour-of-csharp/tutorials/