Func<int, int, int> lambda = (a, b) => a + b * 2;    Expression<Func<int, int, int>> expression = (a, b) => a + b * 2;
这两句有什么区别,我知道编译成IL后不一样,但是我不懂IL。哪位能通俗地解释一下呢?
什么时候用第一句的Func,什么时候用Expression

解决方案 »

  1.   

    Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型具体参见 http://msdn.microsoft.com/en-us/library/bb397687.aspxhttp://msdn.microsoft.com/zh-cn/library/bb397687.aspx
      

  2.   

    http://msdn.microsoft.com/zh-cn/library/system.linq.expressions.expression.aspx
      

  3.   

    谢谢,不过MSDN上我也知道看,但是我要的是区别
      

  4.   

    http://www.cnblogs.com/jeffreyzhao/archive/2009/08/07/from-delegate-to-others-2.html
      

  5.   

    我只知道(a, b) => a + b * 2; 编译之后,如下public int noNameMethod(int a,int b)
    {
      return a + b * 2;
    }
    而  Func<int, int, int> lambda尖括号里面有 三个int类型的 型参第一个表示一个int型的参数第二个表示一个int型的参数第三个就是决定这个方法的返回类型是int型也就是说这个委托(lambda)表示一个有两个int型参数,且返回值是int类型的方法变量,而 (a, b) => a + b * 2 这个方法,就是lambda这个变量的值对象变量保存对象值如今,方法变量也保存方法值了.
      

  6.   

    可惜,7楼8楼没说到点上。只是说了Lambda表达式的用法而已,表达式树就没解释了。