Sobes.tech
Junior — Middle

Bir delege ile bir olay arasındaki farkı nasıl ayırt ederiz ve temel farkları nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde delege belirli bir imzaya sahip bir metoda referans temsil eden bir türdür. Delege'ler, metodları dolaylı olarak çağırmaya olanak tanır; bunlar parametre olarak geçirilebilir veya daha sonra çağrı için saklanabilir.

Olay ise, delege'lere dayanan ve abone olanlara bir eylem veya durum değişikliğini bildirmek için kullanılan bir mekanizmadır. Olay, delege'yi kapsüller ve ona erişimi sınırlar: aboneler yalnızca olay işleyicilerini ekleyebilir veya kaldırabilir, doğrudan çağrı yapamazlar.

Ana farklar:

  • Delege bir türdür, olay ise bir sınıf üyesidir ve bir delege kullanır.
  • Delege doğrudan çağrılabilir, olay ise yapılamaz (olayın çağrısı yalnızca tanımlandığı sınıf içinde mümkündür).
  • Olay, kapsülleme ve güvenlik sağlar, dışarıdan rastgele çağrıları engeller.

Örnek:

public delegate void Notify(string message); // delege

public class Process
{
    public event Notify ProcessCompleted; // olay

    public void Start()
    {
        // ... işlemi başlat
        OnProcessCompleted("İşlem tamamlandı");
    }

    protected virtual void OnProcessCompleted(string msg)
    {
        ProcessCompleted?.Invoke(msg); // olay çağrısı
    }
}

// Kullanım:
var process = new Process();
process.ProcessCompleted += msg => Console.WriteLine(msg); // abone olma
process.Start();