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
}
}
}