C# 表达式树(Expression)
2024-09-04 04:47:06
c#中有Expression,即表达式。
通过Expression可以动态构造代码,并编译执行。
比如:
1.
创建参数表达式 :ParameterExpression numParam = Expression.Parameter(typeof(int), "num");、
创建常量表达式:ConstantExpression five = Expression.Constant(5, typeof(int));
创建比较表达式:BinaryExpression numLessThanFive = Expression.LessThan(numParam, five);
创建标号:LabelTarget label = Expression.Label(typeof(int));
创建循环或者分支表达式:
Expression.Loop(
// Adding a conditional block into the loop.
Expression.IfThenElse(
// Condition: value > 1
Expression.GreaterThan(value, Expression.Constant(1)),
// If true: result *= value --
Expression.MultiplyAssign(result,
Expression.PostDecrementAssign(value)),
// If false, exit the loop and go to the label.
Expression.Break(label, result)
),
// Label to jump to.
label
)
2.
创建表达式树:Expression<Func<int, bool>> exprTree = num => num < 5;
3.
分解表达式:ParameterExpression param = (ParameterExpression)exprTree.Parameters[0];
4.
编译表达式:Func<int, bool> result = expr.Compile();
最新文章
- wpf模仿QQ表情
- codeforces Soldier and Number Game(dp+素数筛选)
- page-cache层
- ubantu eclipe
- 白话LINQ系列2---以代码演进方式学习LINQ必备条件
- ASP代码审计 -4.命令执行漏洞总结
- 安装Tomcat服务器
- ural 1242. Werewolf
- Hdu4005-The war(双连通缩点)
- IDEA Tomcat:Failed to initialize end point associated with ProtocolHandler
- strcmp函数实现
- python类库numpy中常见函数的用法
- C语言编对双精度数保留一位小数
- oracle启动服务和监听
- vue打包app嵌入h5,区分app进入和android,ios显示不同的下载链接
- 将eclipse dynamic web project部署到指定的tomcat软件下的webapps文件夹中
- Math.max()/min()
- c/c++ 模板与STL小例子系列<;一 >;自建Array数组
- 【深度学习】一文读懂机器学习常用损失函数(Loss Function)
- [TJOI2012]桥(最短路+线段树)
热门文章
- 智能家居DIY-空气质量检测篇-获取空气污染指数
- What Every Computer Scientist Should Know About Floating-Point Arithmetic
- iOS线程浅析
- Unity 武器拖尾效果
- python cookbook第三版学习笔记十五:property和描述
- php添加或升级扩展模块步骤
- 通过socket和Udp协议简单实现一个群体聊天工具(控制台)
- 深入理解利用new创建对象的执行过程以Person p=new Person(";张三";,20);为例
- Oracle可能会遇到问题和解决方法
- 字节和unicode