首页 > 代码库 > 表达式树基础代码
表达式树基础代码
using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;using System.Linq.Expressions;namespace TestExpressionLambda{ class ProgramExpression { static void Main(string[] args) { ExpressionAdd(); ExpressionFromlambda(); ExpressionStartWith(); Console.Read(); } /// <summary> /// 最简单的加法表达式树 /// /// 根节点 /// BanaryExpression /// NodeType = Add /// Type=System.Int32 /// /// 左叶子 右叶子 /// firstArg secondArg /// ConstantExpression ConstantExpression /// NodeType=Constant NodeType=Constant /// Type=System.Int32 Type=System.Int32 /// Value=http://www.mamicode.com/3 Value=2"StartsWith", new[] { typeof(string) }); //取参数表达式:x,y ParameterExpression x = Expression.Parameter(typeof(string), "x"); ParameterExpression y = Expression.Parameter(typeof(string), "y"); //StartsWith方法需要的参数 Expression[] methodArgs = new[] { y }; //生成调用表达式 MethodCallExpression call = Expression.Call(x, method, y); var lambdaParameters = new[] { x, y }; //Expression.Lambda方法生成表达式树委托 Expression<Func<string, string, bool>> lambda = Expression.Lambda<Func<string, string, bool>>(call, lambdaParameters); //Compile出委托 Func<string, string, bool> func = lambda.Compile(); Console.WriteLine(func("First", "Second")); Console.WriteLine(func("First", "Fir")); } }}
表达式树基础代码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。