C# Delege ve Olaylar
🚀 C# Delege ve Olaylar: Olay Yönlendirme Teknikleri 🚀
C# programlama dilinde delegeler (delegate) ve olaylar (events), yazdığımız kodu esnek, modüler ve yönetilebilir hale getiren en güçlü yapılardan biridir. Bu yazımızda delegeler ve olaylar nedir, nasıl kullanılır ve olay yönlendirme (event routing) teknikleri nelerdir, detaylı bir şekilde ele alacağız.
🎯 Delegeler Nedir?
Delegeler, temel olarak metotlara referans tutan nesnelerdir. Başka bir ifadeyle, delegeler sayesinde metotları parametre olarak iletebilir veya geri dönüş değeri olarak alabiliriz.
📌 Delege Tanımlama Örneği:
1 2 3 4 5 6 7 8 9 10 11 12 | // Delege tanımlama örneği public delegate void MesajGosterici(string mesaj); // Delegenin işaret ettiği metot public void EkranaYaz(string mesaj) { Console.WriteLine(mesaj); } // Delege kullanımı MesajGosterici gosterici = EkranaYaz; gosterici("Merhaba, delegeler!"); |
Yukarıdaki örnekte, MesajGosterici isimli bir delege tanımladık ve bu delege ile metot çağrısını gerçekleştirdik.
🎯 C# Olaylar (Events) Nedir?
Olaylar, delegelerin özel kullanım biçimidir. Bir durum meydana geldiğinde otomatik olarak çalıştırılacak metotları çağırmak için kullanılırlar. Olaylar, genellikle kullanıcı etkileşimi, hata durumu veya veri değişikliği gibi durumları yönetmek için kullanılır.
📌 Olay Tanımlama ve Kullanımı Örneği:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // Olay tanımı public delegate void DurumDegistiEventHandler(string durum); public class Urun { // Olay tanımlanması public event DurumDegistiEventHandler DurumDegisti; public void DurumuGuncelle(string yeniDurum) { DurumDegisti?.Invoke(yeniDurum); // Olayı tetikle } } // Kullanım class Program { static void Main() { Urun telefon = new Urun(); telefon.DurumDegisti += Telefon_DurumDegisti; telefon.DurumuGuncelle("Stokta mevcut"); } private static void Telefon_DurumDegisti(string durum) { Console.WriteLine("Ürün durumu güncellendi: " + durum); } } |
Bu örnekte, DurumDegisti isimli bir olay tanımladık ve olay tetiklendiğinde Telefon_DurumDegisti metodu çağrıldı.
🎯 Olay Yönlendirme Teknikleri (Event Routing Techniques)
Olay yönlendirme teknikleri, özellikle karmaşık uygulamalarda olayları merkezi bir şekilde yönetmek için kullanılır. Bu teknikler sayesinde olaylar uygulama içerisinde etkin ve verimli biçimde dağıtılır.
📌 En Yaygın Kullanılan Teknikler:
Doğrudan Yönlendirme (Direct Routing)
Olayı doğrudan hedef öğeye iletir.
En basit yöntemdir.
WinForms uygulamalarında sıkça tercih edilir.
Kabarcıklanma (Bubbling Routing)
Olayın gerçekleştiği öğeden başlayarak yukarı doğru (ebeveyn öğelere) iletilmesi.
WPF uygulamalarında oldukça yaygındır.
Tünelleme (Tunneling Routing)
Olayın yukarıdan aşağıya doğru (üst öğeden başlayarak alt öğeye) yönlendirilmesidir.
Genellikle WPF platformunda kullanılır ve olay isminin başına “Preview” ifadesi eklenerek belirtilir (örneğin:
PreviewMouseDown).
📌 Kabarcıklanma Örneği (Bubbling Routing):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // XAML <StackPanel Button.Click="StackPanel_Click"> <Button Click="Button_Click">Tıkla</Button> </StackPanel> // Kod tarafı (Code-behind) private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Butona Tıklandı!"); } private void StackPanel_Click(object sender, RoutedEventArgs e) { MessageBox.Show("StackPanel Olayı Kabardı!"); } |
Bu örnekte, önce Button olayı tetiklenir ve ardından olay StackPanel’e doğru yukarı kabarcıklanarak taşınır.
🎯 Neden Delegeler ve Olayları Kullanmalıyız?
✅ Kod tekrarını azaltır ve kodu sadeleştirir.
✅ Esneklik ve modülerlik sağlar.
✅ Uygulama içinde bağımlılıkları azaltarak, kodun bakımını kolaylaştırır.
✅ Gerçek zamanlı uygulamalarda etkin ve hızlı yönetim sağlar.
🚩 Sonuç
Delegeler ve olaylar, C# dilinde kodun esnekliğini ve yönetilebilirliğini artıran kritik araçlardır. Özellikle olay yönlendirme tekniklerini kullanarak uygulamanızdaki olayları verimli bir şekilde kontrol edebilir ve yönetebilirsiniz.
