namespace DelegateTest
{
delegate bool FilterDelegate(int i); //声明委托,参数类型,返回类型,委托名称。
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 2, 3, 5, 6, 6, 7, 8, 9 };
// List<int> newList = MyFilter(array,FilterOdd); //传入委托函数
//使用匿名方法来求偶数,替代上面的直接传入函数名的方法,在这里面直接写函数体。
List<int> newList = MyFilter(array, delegate(int i) { //匿名方法的使用,函数体直接写在这里
return i % 2 == 0;
});
/// 匿名方法,整个当一个参数
/// delegate(int i)
/// {
/// return i % 2 == 0;
/// }
foreach (int item in newList)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
static List<int> MyFilter(int[] array, FilterDelegate filter) //把委托函数当做参数,委托类型
{
List<int> list = new List<int>();
for (int i = 0; i < array.Length; i++)
{
if (filter(i)) //调用委托函数
{
list.Add(i);
}
}
return list;
}