Delegelerin Parametre Olması

Anonim metodumuzu bu sefer de fonksiyona parametre olarak gönderdik.


namespace AnonimMetodParametre
{
    class Program
    {
        #region delegenin parametre olması
        delegate int Matematiksel(int sayi);

        static int KüpAl(int sayi)
        {
            return sayi * sayi * sayi;
        }
        static int Cıkar(int sayi)
        {
            return --sayi;
        }

        static void Metod(Matematiksel p, int a) // delegemizi parametre olarak gönderdik.
        {
            Console.WriteLine(p.Invoke(a));
        }

        #endregion
        static void Main(string[] args)
        {
            Matematiksel delege = KüpAl;
            delege += Cıkar;                  // delge ye yine multicast yaptık ama en son hangi metod bağlandıysa o metod çalıştı.
            Console.WriteLine(delege(4));
            Metod(delege, 20);
            Console.WriteLine("-----------");
            Console.WriteLine("3 e bölünen sayılar");



            #region anonimMetod parametre
            int[] sayilar = { 3, 6, 9, 12, 17, 19, 27 };

            int[] bolunenler = Array.FindAll(sayilar, delegate(int p) //sayilar dizisi elemanları delegeye teker teker gönderilir.Delegede tanımlı olan işlem yapılıp koşulu sağlayanlar diziye atılır.
                {
                    return (p % 3 == 0);
                }); // delege normal bir fonksiyonun işini yapıyor tamamı parametre olarak algılancağı için blok sonunda ; kullanamayız.

            foreach (int item in bolunenler)
            {
                Console.WriteLine(item);
            }
            #endregion
        }

    }
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir