C# event Nedir? Kullanımı

C# programlama dilinde yer alan ve görsel arayüz uygulamalarında sıklıkla kullanılan events nedir, event oluşturma, event kullanımı ve event tetikleme ile ilgili bilgiler yer alıyor.

C# event nedir?

C# içerisinde yer alan event anahtar kelimesi delegate anahtar kelimesi ile tanımlanan bir değişkenin olay olduğunu açıkca belirtmek ve yönetmek için kullanılan anahtar kelimedir.

C# delegate ile ilgili detaylı bilgiye buradan ulaşabilirsiniz.

C# programlama dili kullanılarak geliştirilen görsel arayüz uygulamalarında sıklıkla olaylar kullanılır.

Oluşan olaylara örnek olarak metin kutusuna yazı girilmesi, form elemanını yüklenmesi, klavyeden bir tuşa basılması verilebilir.

Aslında olayları sadece görsel arayüzde değil kendimiz .NET içerisinde yer alan EventHandler ve EventArgs sınıfını kullanarak hazırlayabiliriz.

EventHandler ve EventArgs kullanılarak hazırladığım örneğe buradan ulaşabilirsiniz.

Örnek incelendiğinde olay oluşturmak için ayrıca event anahtar kelimesinin kullanılmadığı görülür.

Oluşturduğumuz olaylarda event anahtar kelimesini delegate değişkeninin bir olay olduğunu açıkca belirtmek ve olayları yönetmek için kullanabiliriz.

Olayları yönetmek ile bahsettiğim bir delegate değişkenine birden fazla metot eklenebilir.

Ancak bu durum istenmeyen bir durum olabilir.

Event anahtar kelimesinde yer alan add ve remove olaya yeni bir metot bağlandığında ve kaldırıldığında tetiklenir.

Buraya eklenen komutlarla olaya eklenecek metot sayısı belirlenir veya metot ile ilgili bilgi alınabilir.

using System;

class Program {

    static void Main() {

        Sinif s1 = new Sinif();
        s1.BirOlay += BirMetot;
        s1.BirOlay -= BirMetot;
        s1.BirOlay += BirMetot;
    }

    public static void BirMetot(object sender, EventArgs e) { }
}

class Sinif {
    public event EventHandler BirOlay {
        add {
            Console.WriteLine("Bir metot eklendi.");
            Console.WriteLine("Eklenen metot: {0}", value.Method.Name);  // value.Method - MethodInfo
        }
        remove {
            Console.WriteLine("Bir metot silindi.");
            Console.WriteLine("Silinen metot: {0}", value.Method.Name);  // value.Method - MethodInfo
        }
    }
}

Örnek incelendiğinde event yapısının Property/Özellikler yapısına benzetebilirsiniz.

Ancak event anahtar kelimesi ile belirtilen özellikte get ve set alanları yer almaz.

Eklenen ve silinen metot add ve remove alanlarına Delegate sınıfından oluşturulan value değeri ile ulaşılabilir.

Delegate sınıfı içerisinde yer alan Method özelliği sayesinde Reflection alanında yer alan MethodInfo sınıfı ile metot hakkında bilgi alınabilir.

C# Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!