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();