C#中的简单匿名方法

时间:2009-07-27 04:55:05

标签: c# delegates anonymous-methods

请参阅下面的第二位代码..代码无法编译。我试图找出anon方法,我明白了..

但不是没有使用我在网上发现的匿名方法的例子,而这些方法没有编译

使用VS2008 ..编译为.NET3.5

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestAnonymousMethods
{
    public class Program
    {
        // using an anon method
        static void Mainx(string[] args)
        {
            int[] _integers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            int[] evenIntegers = Array.FindAll(_integers,
                                        // this is the anonymous method below
                                       delegate(int integer)
                                       {
                                           return (integer % 2 == 0);
                                       }
                );

            foreach (int integer in _integers) 
                Console.WriteLine(integer);

            foreach (int integer in evenIntegers)
                Console.WriteLine(integer);
        }

        // not using anon method
        static void Main(string[] args)
        {
            int[] _integers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

            int[] evenIntegers = Array.FindAll(_integers, IsEven); // **Compile error here**

            foreach (int integer in _integers)
                Console.WriteLine(integer);

            foreach (int integer in evenIntegers)
                Console.WriteLine(integer);
        }

        public bool IsEven(int integer)
        {
            return (integer % 2 == 0);
        }


    }
}

1 个答案:

答案 0 :(得分:6)

public static  bool IsEven(int integer)
{
    return (integer % 2 == 0);
}

Main是静态的,因此IsEven也必须是静态的。