一,如下代码:
using System; using System.Linq.Expressions; namespace Demo { class Program { static void Main(string[] args) { Func<int, int, int> func = null; //两个参数 ParameterExpression a = Expression.Parameter(typeof(int), "a"); ParameterExpression b = Expression.Parameter(typeof(int), "b"); //求积 BinaryExpression cj = Expression.Multiply(a, b); //常量 ConstantExpression Con2 = Expression.Constant(4); //求和 BinaryExpression Add = Expression.Add(cj, Con2); //创建一个表示lambda表达式的对象 Expression<Func<int, int, int>> lexp = Expression.Lambda<Func<int, int, int>>(cj, a, b); func = lexp.Compile(); //表达目录树生成委托 //查看表达式 Console.WriteLine(lexp.ToString()); // var ss = func.Invoke(1, 2); //执行委托返回结果 Console.WriteLine(ss); //创建一个表示lambda表达式的对象 Expression<Func<int, int, int>> lexp1 = Expression.Lambda<Func<int, int, int>>(Add, a, b); func = lexp1.Compile(); //表达目录树生成委托 //查看表达式 Console.WriteLine(lexp1.ToString()); var ss1 = func.Invoke(1, 2); //执行委托返回结果 Console.WriteLine(ss1); Console.ReadKey(); } } }
二,运行结果如下: