bueno ,dejo un ejemplo bastante basico, pero creo que deja una idea clara de como usar delegados,
el programa no hace nada del otro mundo ,solo "filtra" arreglos, espero que puedan abstraer la idea
using System;
using System.Collections;
public delegate bool filtro(int i);
class Filtros{
public static bool Positivos(int i){
return (i>=0);
}
public static bool Negativos(int i){
return (i<=0);
}
}
class Filtador{
public static int[] Filtrador(int[] a, filtro fil){
ArrayList aList
= new ArrayList
();
for (int i = 0; i < a.Length; i++)
{
if (fil(a[i])) { aList.Add(a[i]); }
}
return ((int[])aList
.ToArray(typeof(int)));
}
}
class hello
{
static void Main()
{
int[] a= {4,-4,6,-6,8,-8,10,-10};
int[] b;
filtro j;
j = Filtros.Positivos;
b = Filtador.Filtrador(a,j);
foreach (int ca in b) Console.Write(ca + " ");
Console.WriteLine();
j = Filtros.Negativos;
b = Filtador.Filtrador(a, j);
foreach (int ca in b) Console.Write(ca + " ");
}
}