这几种写法都是用来输出偶数。 // C# 1.0 class Program { public delegate bool NumberTester(int i); static void Main(string[] args) { PrintMatchingNumbers(1, 10, new NumberTester(IsOdd)); } public static bool IsOdd(int i) { return (i & 1) == 0; } public static void PrintMatchingNumbers(int from, int to, NumberTester filter) { for (int i = from; i <= to; ++i) { if (filter(i)) { Console.WriteLine(i); } } } } // C# 2.0 class Program { public delegate bool NumberTester(int i); static void Main(string[] args) { PrintMatchingNumbers(1, 10, delegate(int i) { return (i & 1) == 0; } ); } public static void PrintMatchingNumbers(int from, int to, NumberTester filter) { for (int i = from; i <= to; ++i) { if (filter(i)) { Console.WriteLine(i); } } } } // C# 3.0 class Program { public delegate bool NumberTester(int i); static void Main(string[] args) { PrintMatchingNumbers(1, 10, i => (i & 1) == 0); } public static void PrintMatchingNumbers(int from, int to, NumberTester filter) { for (int i = from; i <= to; ++i) { if (filter(i)) { Console.WriteLine(i); } } } }