C# Delegates ve Events Kullanımı

C# Delegates ve Events Kullanımı

C# Delegates Nedir?

C# dilinde delegates, belirli bir yöntem (metot) imzasını temsil eden bir referans türüdür. Delegates, bir metot çağrısının hangi metoda yönlendirileceğini dinamik olarak belirleme olanağı sunar. Ayrıca, birden çok metodu temsil ederek bu metotları aynı anda çağırma imkanı sağlar. Delegates, özellikle olay yönetimi (event management) ve geri çağırma fonksiyonları için son derece yararlıdır.

Delegate Tanımlama ve Kullanma

Bir delegate tanımlamak için, önce delegate'in imzasını belirtmeliyiz. Aşağıda bir delegate tanımlama ve kullanım örneği verilmiştir:

// Delegate tanımı
public delegate void MyDelegate(string message);

// Delegate'i kullanacak sınıf
public class MyClass
{
    public void DisplayMessage(string message)
    {
        Console.WriteLine(message);
    }
}

// Delegate'i çağırma
class Program
{
    static void Main(string[] args)
    {
        MyClass myClass = new MyClass();
        MyDelegate del = new MyDelegate(myClass.DisplayMessage);
        del("Hello, Delegates!");
    }
}

C# Events Nedir?

C#'da events, bir olayın gerçekleştiğinde bir veya birden fazla metodun çağrılmasına olanak sağlar. Events, genellikle kullanıcı etkileşimleri ve sistem olayları gibi senaryolarda kullanılır. Event, bir delegate üzerinde tanımlanmış bir türdür ve onu dinleyen (subscribe) metodların bir listesini tutar.

Event Tanımlama ve Kullanma

Event tanımlamak için, önce bir delegate oluşturmalı ve ardından bu delegate'i kullanarak bir event tanımlamalıyız. Aşağıda bir event tanımlama ve kullanım örneği verilmiştir:

// Delegate tanımı
public delegate void MyEventHandler(string message);

// Event tanımı
public class MyEventPublisher
{
    public event MyEventHandler MyEvent;

    public void TriggerEvent(string message)
    {
        MyEvent?.Invoke(message);
    }
}

// Event'i dinleyen sınıf
public class MyEventListener
{
    public void OnMyEvent(string message)
    {
        Console.WriteLine(message);
    }
}

// Event kullanım örneği
class Program
{
    static void Main(string[] args)
    {
        MyEventPublisher publisher = new MyEventPublisher();
        MyEventListener listener = new MyEventListener();

        // Event'i dinleme
        publisher.MyEvent += listener.OnMyEvent;

        // Olayı tetikleme
        publisher.TriggerEvent("Hello, Events!");
    }
}

Sonuç

C# delegates ve events, uygulama geliştirme sürecinde son derece önemli kavramlardır. Delegates, metodlar arası iletişimi sağlar ve events, olay tabanlı programlamayı kolaylaştırır. Bu iki yapı, modern C# uygulamalarında sıkça kullanılmaktadır ve güçlü bir esneklik sağlar. Bu nedenle, C# geliştiricilerinin bu kavramları iyi bir şekilde anlaması ve etkili bir şekilde kullanması önemlidir.