一,如下代码:
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(); //求和
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(, ); //执行委托返回结果
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(, ); //执行委托返回结果
Console.WriteLine(ss1); Console.ReadKey();
}
}
}
二,运行结果如下: