Bu örnekte Donusum adında bir metodumuzu bir integer dizisinin her bir elemanında uygulamayı görelim. Bu dönüşüm için aşağıdaki gibi bir delegate oluşturalım.
public delegate int Donusturucu (int x);
Aşağıdaki Islemler klasımıza Donusum adında bir plug-in method tanımladık. Parametre olarak delegate kullandık.
class Islemler
{
public static void Donusum(int[ ] degerler, Donusturucu d)
{
for (int i = 0; i < degerler.Length; i++)
degerler[i] = d(degerler[i]);
}
}
Burada püf nokta metodumuzun içerisinde metodları parametre olarak kullanabiliyor olmamız.
Aşağıda örneğin tamamını incelersek daha iyi anlayacağız.
using System;
namespace Delegates1
{
public delegate int Donusturucu(int x);
class Islemler
{
public static void Donusum(int[] degerler, Donusturucu d)
{
for (int i = 0; i < degerler.Length; i++)
degerler[i] = d(degerler[i]);
}
}
class Program
{
static int Kare(int x) { return x * x; }
static int Kup(int x) { return x * x * x; }
static void Main(string[] args)
{
int[] degerler = { 1, 2, 3 };
Islemler.Donusum(degerler, Kare); // Delegate sayesinde metodumuzu parametre gibi kullanabildik.
//Islemler.Donusum(degerler, Kup); // Delegate sayesinde metodumuzu parametre gibi kullanabildik.
foreach (int i in degerler)
Console.Write(i + " "); // 1 4 9
Console.ReadKey();
}
}
}