C# Expression tree

运算式树 Expression tree

Expression tree 是一个树状结构的物件, 这个树上的每一个节点都是一个运算节点(Expression Node), Expression Node 都是 Expression 类别, 常见的 Expression Node 有, ConstantExpression, ParameterExpression, MethodCallExpression, MemberExpression, LambdaExpression, BinaryExprfession, 可以利用将 lambda 运算式赋值给 Expression<TDelegate> 类型, 来建立 Expression tree, Expression<TDelegate> 经过 Compile 方法又会得到 TDelegate 委托类

using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;

Expression<Func<int, int>> squareExp = num => num * num;
Func<int, int> square = squareExp.Compile();
Console.WriteLine(square(3));

也可以使用 Expression 类别的静态方法来建立, 如果要建立 ConstantExpression 就使用 Constant 方法建立, ParameterExpression 就使用 Parameter 方法

using System.Linq;
using System.Linq.Expressions;
using System.Collections.Generic;

ParameterExpression numParam = Expression.Parameter(typeof(int), "num");
BinaryExpression numSquare = Expression.Multiply(numParam, numParam);
Expression<Func<int, int>> squareExp = Expression.Lambda<Func<int,int>>(numSquare, numParam);
Func<int,int> square = squareExp.Compile();
Console.WriteLine(square(3));

<<:  毒贩被黑吃黑

>>:  一次一件事就好,对你而言最重要的东西是什麽?

Day 30 GUI

在JAVA程序设计中,如果要设计元件的话,要用GUI,也就是图形使用者介面,今天我们要使用GUI创建...

【D3】建立MySQL资料库

前言 首先把之前做的资料库格式搬家,也就是取得每日的股票之交易资讯进入资料库,首先要做的就是建立资料...

Day 13-假物件 (Fake) - 模拟物件 (Mock)-2 (核心技术-5)

假物件兄弟战:虚设常式 V.S 模拟物件 相信许多人刚接触完虚设常式与模拟物件,会说不出两者之间确切...

15.unity变数传递(下)场景间数据传递

上一篇提到改变其他脚本的全域变数 这一篇针对场景间保留数据的方法作探讨。 在unity换场景(sce...

Day-02 请解释 Ruby 和 Rails 是什麽?

首先要注意 Ruby 和 Rails 是不一样的东西! Ruby 是一种物件导向的程序语言,而 R...