using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Delegates
{
public delegate bool NumPredicate(int num);
public static void Main()
{
int[] number = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
NumPredicate evenPredicate = IsEven;
Console.WriteLine("Call Iseven using a delegatevariable:{0}", evenPredicate(4));
List evenNumbers = FilterArray(number, evenPredicate);
DisplayList("Use IsEven to filter even numbers", evenNumbers);
List oddNumbers = FilterArray(number, IsOdd);
DisplayList("Use IsOdd to filter odd numbers:", oddNumbers);
List NumberOver5 = FilterArray(number, IsOver5);
DisplayList("Use IsOver5 to filter numbers over5:", NumberOver5);
} //end Main method
private static List<int> FilterArray(int[] intAr, NumPredicate pred)
{
List<int> result = new List<int>();
foreach (int item in intAr)
if (pred(item))
result.Add(item);
return result;
} // end method FilterArray
private static bool IsOdd(int number)
{ return (number % 2 == 1); } // end method IsOdd
private static bool IsEven(int number)
{ return (number % 2 == 0); } // end method IsEven
private static bool IsOver5(int number)
{ return (number > 5); } // end method IsOver5
private static void DisplayList(string descript, List<int> list)
{
Console.Write(descript);
foreach (int item in list)
Console.Write("{0} ", item);
Console.WriteLine();
Console.Read();
}
}
public static class NumExtensions
{
public static void (this delegate adelegate);
}
}
要求:在该类原来具有的判断数组中的元素是奇数、偶数、大于5的数的基础上,不改变原来类的定义,而采取扩展类的方法,增加一个判断小于5的数的方法IsUnder5( ),然后对指定数组分别调用4个方法挑选出奇数子集、偶数子集、大于5的数的子集和小于5的数的子集并分别显示结果。