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); //传入委托函数 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; } static bool FilterOdd(int i) //委托必须是static方法吗? { return i % 2 == 1; } }}