1.最直接的,代码简洁些
2.C#3.0的语法LINQ依赖于此。http://www.cnblogs.com/solo/archive/2008/04/24/1168981.html
我个人的很浅的理解

解决方案 »

  1.   

    与有名函数相比,当函数只使用一次时,匿名函数有几个优点: 程序的名称空间不会受到那些只使用一次的函数的污染。 
    函数的代码就位于使用它的地方,这样程序员就不用到处寻找这些只会使用一次的小函数代码了。 
    这种函数显然是与它所传递到的函数相关的,因此它显然与使用这个上下文的其他程序员也是有关的。如果这些只使用一次的函数都是与调用函数单独编写的,而后来调用函数被删除了,那么显然这些只使用一次的函数也就需要删除了。 参考:
    http://www.ibm.com/developerworks/cn/linux/l-highfunc.html
      

  2.   

    可以生成闭包,比如:
    class Program
        {
            public static void Main()
            {
                Action a = Test(1);
                a();
                a();
                a();
            }
            public static Action Test(int a)
            {
                return delegate()
                {
                    Console.WriteLine(++a);
                };
            }
        }
    参数a被封到了委托里,但是在推出Test函数后生命周期并没有完。闭包在有的时候是非常有用的。比如你一个窗体里面多个用户控件是动态加载的,用户控件里的函数又不都一样,就可以通过传参来生成闭包调用。
    还可以就是做curry化
    Func<int, int, int> func = i => i + 1;
    Func<int, int> curry = func.Curry(1);
    curry(2);public static Func<P2, R> Curry<P1, P2, R>(this Func<P1, P2, R> func, P1 arg0)
            {
                return func.Curry()(arg0);
            }
      

  3.   

    匿名方法可以将代码块传递为委托参数...减少实例化委托所需的系统开销...虽然Lambda表达式也是匿名函数...但和匿名方法并不是一回事儿...要分清楚...例如...可以将匿名方法转换为带有各种签名的委托..对于Lambda表达式来说却是不可能的...
      

  4.   

    可以将匿名方法转换为带有各种签名的委托..对于Lambda表达式来说却是不可能的...
    ==========================================================================================
    为什么Lambda不行,别忽悠人好吗public delegate int TestD(int a);
        class Program8
        {
            public static void Main()
            {
                Testdelegate(Test, 1);
                Testdelegate(i => i + 1, 1);
            }
            public static int Test(int a)
            {
                return a;
            }
            public static void Testdelegate(TestD d, int a)
            {
                Console.WriteLine(d(a));
            }
        }
      

  5.   

    8楼...先去学学什么叫Lambda表达式...
      

  6.   

    8楼...先去学学什么叫Lambda表达式...
    ==============================================
    请你举个例子
      

  7.   

    8楼...先去学学什么叫Lambda表达式...
    ============================================== 
    我Lambda表达式学的不好,像您请教Lambda比匿名委托差在哪了。
      

  8.   

    Lambda跟匿名委托没有可比性...都说了不是一个东西...虽然概念非常类似...另外匿名委托、匿名方法、匿名函数都是不同的概念...多看看MSDN...
      

  9.   

    Lambda跟匿名委托没有可比性...都说了不是一个东西...虽然概念非常类似...另外匿名委托、匿名方法、匿名函数都是不同的概念...多看看MSDN...==============================================================================
    请举例子,你这解释没有说服力。我就问这句“可以将匿名方法转换为带有各种签名的委托..对于Lambda表达式来说却是不可能的”
      

  10.   

    不是每个人都像你那么闲...上班时间抽空上来看看而已...下班才有空...你可以自己先去看MSDN...很容易明白的...
      

  11.   

    你没有任何例子就说我 “.先去学学什么叫Lambda表达式..”
    不明白你为什么那么狂
      

  12.   

    你那个例子跟“Lambda表达式不可能将匿名方法转换为带有各种签名的委托”没有任何关系...自己先搞清楚...不需要我来举例...
      

  13.   

    你那个例子跟“Lambda表达式不可能将匿名方法转换为带有各种签名的委托”没有任何关系...自己先搞清楚...不需要我来举例.
    ==================================================================================================
    那就请你举一个正确的例子
      

  14.   

    to fuadam:看来你还真闲...本来我打算下了班抽时间认真回个帖...你越这样我越懒得回答...如果我错了...放心...CSDN高手如云...早就有一帮人跳出来BS我了...论坛里回答问题是自愿的...大家都很忙...没有谁必须承担义务...自己看资料去...
      

  15.   

    我没说你一定要回答这个问题,我只是觉得你很狂。我认为你说错了,我就举一个例子,而你在说我的时候,不举例子。而是很不屑的说,你先去学学lambda去。好像我是刚毕业的小白啊。