arg=>arg + 1
class Program { static void Main(string[] args) { Expression<Func<int, int>> exp = arg => arg + 1; Console.WriteLine(exp.Compile()(11)); // 11 Console.ReadKey(); } }
1、LambdaExpression继承自Expression,LambdaExpression的表现形式是Expression<Fun<>>或者Expression<Action<>>。
2、LambdaExpression可以通过Expression.Lambda()生成。
3、LambdaExpression可以通过Compile()函数转换成Fun<>,但是Fun<>只能被调用,不可以转换成LambdaExpression。
LambdaExpression.Compile()(arg)调用,其中LambdaExpression.Compile()就是Fun<>,而arg就是Fun<>委托的参数。
class Program { static void Main(string[] args) { Expression<Func<int, int, int>> exp = (arg, arg1) => arg * 10 + arg1; Func<int, int, int> func = exp.Compile(); Console.WriteLine(func(2, 8)); // 28 Console.ReadKey(); } }