C# Vize + Final Ders Notları 15 – Olaylar(Events)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*
*Event ile bir olay ile birden çok olayın tetiklenmesi sağlanabilir. Örneğin bir ürüne ait satış gerçekleştirdiğinizde bunun otomatik olarak stok dan düşmesini istiyorsanız SatisYap() metodu daha sonrada StokDusur() metotlarını eventlar ile gerçekleştirebilirsiniz.
*/
namespace ConsoleApplication3
{
    /*
 * c# kullanılan event mekanizmasının temelinde delegate yapısı vardır.
 * c#da bulunan delagate metotları kapsülleyen ve metotların herhangi bir deişken gibi başka metotlara aktarabilmeisni sağlayan bu satyede metodun istenilen bir zamanda uygulama içersinde çalıştırılmasını sağlayan “asenkron  callback” bir nesnedir.
*/
    class EventTestParametreli
    {
        public delegate void testDelegate(object sender, TestEventArgs args);//değer döndürmeyen testDelegate adında 2 adet parametresi obje ve argümanlar olan temsilci oluşturuyoruz
        public event testDelegate testEvent;//testDelegate temsilcisine ait testEvet adıneda olay oluşturuyoruz.
        public EventTestParametreli()
        {
            testEvent += new testDelegate(ok1);//eventımıza metotları ekliyoruz
            testEvent += new testDelegate(ok2);
            testEvent += new testDelegate(ok3);
            string i = Console.ReadLine();//kullanıcıdan sayı isteniyor
            int sayi = Convert.ToInt32(i);
            testEvent(this,new TestEventArgs(sayi));//testEvent a this ile hangi metot üzerinde çalışıyorsa adını this e gönderir. this de değeri sender a karşılık gönderir. new keyword ü ile çağırıdğımıza dikkat edelim
            //TestEventArgs ise girilen sayıyı yapıcı metodu üzerinden işlemlerini gerçekleştirir
        }
        public void ok1(object sender, TestEventArgs args)//ok1 delegate in metod listesine eklendiği için object sender, TestEventArgs args aynı olmak zorundadır.
        {
            Console.WriteLine(args.Sayi + “değeri”);//args nesnesi üzerinden Sayi propertysinin get özelliğini kullanarak girilen sayıyı elde ediyoruz.
        }
        public void ok2(object sender, TestEventArgs args)
        {
            Console.WriteLine(args.Sayi + “değeri”);
        }
        public void ok3(object sender, TestEventArgs args)
        {
            Console.WriteLine(args.Sayi + “değeri”);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            new EventTestParametreli();
            Console.ReadKey();
        }
    }
    public class TestEventArgs : EventArgs//kendi EventArgs lerimizi yazarak bize döndürülebilecek argümanları belirleyebiliyoruz.
    {
        private int sayi;//field oluşturuldu
        public TestEventArgs(int sayi)//tam sayı parametreli yapıcısı oluşturuldu
        {
            this.sayi = sayi;//field kısmına parametrede ki değer yollandı
        }
        public int Sayi//property oluşturuldu
        {
            get
            {
                return sayi;//değer okunacağı zaman sayı field inden değer çekildi.
            }
            set
            {
                sayi = value;//gönderilen değer(value) sayi fieldine yollandı
            }
        }
    }
}


Yazılıma olan tutkusu için Trakya Üniversitesi - Bilgisayar Teknolojisi ve Bilişim Sistemleri öğrencisi, bölüm temsilcisi ve Keşan Yusuf Çapraz Uygulamalı Bilimler Yüksekokulu okul temsilcisi olarak öğrenimini 2016'da tamamladı. Junior Java Developer olarak aktif iş hayatına devam etmektedir.

Yazıyı Paylaş

Related Articles

Yorum Yaz

© 2018 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları