14 Haziran 2014 Cumartesi

DELEGATE VE EVENT...

Merhaba, bu yazımda kısaca C# delegate ve event yapısından bahsedeceğim. Delegate'ler Türkçe karşılığı olarak elçi, temsilci anlamına gelirler. Programlama alanında metotlara referanslık ederler. Delegate'lere anlam katan özelliği ise yalnızca bir metoda değil birden fazla metoda referanslık edebilmeleridir. Bu, bir delegate kullanımı ile aynı zamanda birden fazla metodu delegate'e eklemiş olduğunuz sırayla (burada içine uygun tipte metot alan bir liste gibi düşünebiliriz) çalıştırabiliriz anlamına gelir. Yalnızca parametre tipi, sayısı gibi kısıtlamaları göz önünde bulundurmamız gerekir. Bu bağlamda delegate'in class, enum gibi referans tipi olduğunu unutmamamız gerekir. Çalışma zamanında da delegate'in hangi metotlara referanslık etmesi ya da referans listesinden silinmesi mümkündür. Bunu kısa bir örnekle açıklarsam daha açıklayıcı olacağına inanıyorum:



Event(olay) yapısından biraz bahsedersek, eventler delegate tipinde olup genelde button, checkbox, textbox gibi kontrol yapılarında karşılaşacağımız bir işlem gerçekleştirdiğimizde veya gerçekleştirmediğimizde de dilersek otomatik olarak çalıştırılacak olan metotlardır. Bir işlem gerçekleştirmeden çalıştırılmasından kasıt çalar saat gibi düşünebiliriz, biz ona bir ayar yapıyoruz ve zamanı gelince o da kendi başına bu ayara uygun işlemini gerçekleştiriyor. Bu deleagate ve event yapısını biraz öğrendikten sonra aslında delegate'in event yapısından pek farklı bir yapı olup olmama konusunda kafanız karışması muhtemeldir. Şu anki durumumuzda bunu bir sonraki plana bırakıp birlikte nasıl çalıştıklarına bakalım:


Gördüğünüz üzere event'imiz delegate tipinde oldu ve onun parametrelerine geri dönüş tipine uygun metotları içeriyor. Burada dikkat edilmesi gereken bir diğer husus event'imize bir metot ekleyecek isek += ya da event'imizden bir metot silecek isek -= operatörlerini kullanmamız gerektiğidir. Örneğimizde event'imizin metotlarının çalışma zamanında belirlenmesini sağladık ve event ve delegate'in getirmiş olduğu özelliklerden yararlandık. Çalıştıracağımız metotlara referans verip toplama ve çıkarma işlemi metotlarının sırasıyla çalışmasını sağladık. Ben örnekte iki metodu event'e ekledim fakat dilersek çok daha fazla sayıda metot ekleyebiliriz. Böylelikle delegate ve event yapılarını kısaca görmüş olduk. Bu yapılardan gerektiği zamanlarda yararlanmayı bilmemiz bize birçok yönden avantaj sağlayacaktır.
Bu konuya da böylece kısa bir giriş yapmış bulunduk. Bir başka yazıda görüşmek üzere, iyi günler.  




Hiç yorum yok:

Yorum Gönder