Temsilciler 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace temsilciler
{
    class Program
    {
         static void Main(string[] args)
        {
            string islem=boyama();
            Console.WriteLine(islem);
        }

        static string boyama() //bir method
        {
            return "Boyama yapıldı";
        }
    }
}

Burada islem alanı bir method unadresinini tutmaktadır. Bu adres çalışma anında belirlenir.

Şimdi aşağıdaki gibi program parçasını daha güçlü hale getirerek yazalım. 1

paragraf boşluk bırak.

using System;

namespace temsilciler
{
    class Program
    {

        static void Main(string[] args)
        {
            Araba arabam1=new Araba();
           boyama(arabam1); //çağrılıyor.
        }

        static void boyama(Araba arabam) //bir method
        {
            Console.WriteLine(arabam.ToString() + "Boyama yapıldı");
        }

        static void cilalama(Araba arabam)
        {
            Console.WriteLine(arabam.ToString() + "cilalama işi tamam");
        }

        static void hizTesti(Araba arabam)
        {
            Console.WriteLine(arabam.ToString() + "Hiz Testi yapıldı");
        }
    }

    class Araba
    {
        public override string ToString()
        {
            return "09890890 nolu araba ";
        }
    }

}

Şimdi bu kod üzerinde düzenlemeler yapalım..

using System;

namespace temsilciler
{
    class Program
    {
        delegate void islemler(Araba arabam);
         //delagate
        static void Main(string[] args)
        {
            Araba arabam1=new Araba();
            //string islem=boyama(arabam1);
            islemler islem=new islemler(boyama);//moethodları yazarken bir değer gibi düşünldüğünden parantez yazılmaz.
            islem+=cilalama;
            islem+=hizTesti;
            islem(arabam1);//çağrılıyor
            Console.WriteLine("\r\n");
            islem-=hizTesti;  //2. çağırma işleminde hızTesti yöntemini çıkardık.
            islem(arabam1); //çağrılıyor.
        }

        static void boyama(Araba arabam) //bir method
        {
            Console.WriteLine(arabam.ToString() + "Boyama yapıldı");
        }

        static void cilalama(Araba arabam)
        {
            Console.WriteLine(arabam.ToString() + "cilalama işi tamam");
        }

        static void hizTesti(Araba arabam)
        {
            Console.WriteLine(arabam.ToString() + "Hiz Testi yapıldı");
        }
    }

    class Araba
    {
        public override string ToString()
        {
            return "09890890 nolu araba ";
        }
    }

}

Burada dikkat edilmesi gereken kurallara ve notları yazalım..

Temsillerin temsil ettikleri methodlar aynı türde ve aynı parametrelere ship olmalıdır.

Temsilcilere eklenen methodlar eklenme sırasına göre çalışırlar.

Temsilcilere method eklenirken parantez yazılmaz. islem+=cilalama; gibi

Temsilci nesnesini tanımalmak için new Islemler(method_Adi) gibi tanımlama yapmak gerekir. Burada Islemler temsilcisinin delegate türünde olduğunu ve  imzasını daha önceden belirtmek gerekir.
delegate void islemler(Araba arabam); satırında olduğu gibi. parametre ve geri dönüş değeri temsilcinin imzasıdır diyebiliriz.
 

 d

 d

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.