Merhaba,
Merhaba, bu yazıda Delegates ve Events(temsilciler ve olaylar) konuları hakkında edindiğim bilgiler ve araştırmalarımı aktarmak istiyorum.
Delegeler ile başlayacak olursak;
Bilindiği üzere metotlar bellekte oluşan ve bellek adreslerine sahip yapılardır. Delegeler ise bu metotların adreslerini tutan yapılardır. Delegeler aynı zamanda referans tipli değişkenlerdir. Bu da demek oluyor ki delegeler nesne oluşturabilir.
Delegelerin bazı özellikleri:
- Metotları kapsüllemek için iyi bir yol sağlar.
- Delegeler 2 veya daha fazla metot olarak birbirine bağlanabilir ve tek event ile çağırılabilir.
Delegeler şu şekilde tanımlanır:
[Erişim Belirleyicisi] delegate [Geri Dönüş Tipi][Delege İsmi](Varsa Parametresi)
Şimdi örnekler üzerinden devam edelim,
İlk olarak parametre vermeden kullanalım;
Yukarıda görüldüğü üzere ilk olarak 2 adet delege tanımladık. Daha sonra ise Ekle ve Cikar metotlarını tanımladık Yazının başında da söylediğim gibi delegelerden nesne oluşturabiliriz. Delegelerden türettiğimiz del1 ve del2 nesnelerine parametre olarak Ekle ve Cikar metotlarını ekledik.
Türettiğimiz nesneler del1 ve del2 ile yukarıdaki şekilde olduğu gibi parametre değerlerini girerek sonuç elde edebilirim. Veya onun yerine aşağıdaki yolu da kullanabiliriz.
Burada 2 ayrı delege oluşturarak metotları adresledik. Burada 1 delege ile de bu metotları adresleyebiliriz.
IslemHandler delegesi yukarıda görüldüğü üzere dönüş tipi olarak int verilmiş ve 2 adet int tipinde parametresi bulunmaktadır.
Burada ilk olarak Ekle metodundan return edilen a+b sonucu yazdırılır. Fakat bu noktada delege1’e eklediğimiz Cikar metodu olduğu için ondan da bir return değeri gelir ve sonuç olarak Cikar metodunun return değeri yazdırılmış olur. Yani Cikar metodunun geri dönüş değeri yazdırılıyor diye Ekle metodu çalışmıyor anlamına gelmez. O da çalışır fakat Cikar metodunun geri dönüş değeri onun üstüne yazılır.
Event kısmına gelecek olursak, event konusu isminden de anlaşılacağı üzere bir olayı bize belirtir. Bu olayları şu şekilde örneklendirebiliriz;
Bir label’a değer girilmesi, butona tıklanılması veya dropDownList’ten seçim yapılması gibi örneklerle bunu açıklayabiliriz.
Event şu şekilde tanımlanır;
[Erişim Belirleyicisi] event [Delege Tipi] [Event Adı]
Ayrıca eventların tipi ona metot bağlayacak delegenin tipinde olmalıdır.
Şimdi örnekler ile devam edelim.
Yukarıda oluşturduğumuz Class1 içerisinde SonucHandler delegesi ve SonucEvent adında bir event oluşturduk. Class1 sınıfında sayi değişkenini kapsülledik ve bununla birlikte eğer 0’dan küçük değer girersek SonucEvent eventini tetikleyeceğimizi belirttik.
2. kısımda ise Class1 sınıfından bir nesne türettik ve SonucEvent eventine SonucHandler delegesi üzerinden kontrol metodunu bağladık. Bununla birlikte eğer Class1’den türetilen bir nesnenin sayi değeri eğer 0’dan küçük girilirse SonucEvent eventi tetiklenecektir bununla birlikte de tetikle metodu çalışacaktır.
Benimde faydalandığım ve faydalı olduğunu düşündüğüm bu yazılardan sizde faydalanabilirsiniz.
Eksik gördüğünüz veya eklemek istediğiniz bilgiler olursa benimle de paylaşırsanız mutlu olurum.
Okuduğunuz için teşekkür ederim.