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