博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Expression(TDelegate) Generic Class
阅读量:6334 次
发布时间:2019-06-22

本文共 2103 字,大约阅读时间需要 7 分钟。

表现一个强类型的lambda expression像树形表达式样形式的数据结构.这个类不能够被继承.
Expression(TDelegate)委托的类型.
注意:
当一个lambda expression被分配一个变量,域,或参数Expression(TDelegate)时.这个编译器发布指令构建一个expression tree.
这里expression tree是一个lambda expression在内存中数据表现形式,表达式树产生透明和清楚的lambda expression的结构.在表达式树中你能想其他数据结构样的与数据相结合.
对待表达式像数据结构样授权接受APIs去接收用户中能在一个自定义管理者中检测,转化和处理的一种格式.例如,在LINQ to SQL数据访问实现使用这种方式灵巧的转化expression trees为按照数据库结构的Transact-SQL声明.
很多标准的查询操作符被定义在Queryable 类中,其中已经有很多Expression(TDelegate)参数类型.
Expression(TDelegate)的NodeType是Lambda.
使用Lambda(TDelegate)(Expression, IEnumerable(ParameterExpression)或 Lambda(TDelegate)(Expression,ParameterExpression[])方法创建一个Expression(TDelegate)对象.
下面代码示范怎样表现一个 lambda expression既执行委过形式的代码和一个expression tree形式的代码.它还演示怎样使用Compile方法转化表达方式树为可执行代码.
//
 Lambda expression as executable code.
Func
<
int
bool
>
 deleg 
=
 i 
=>
 i 
<
 
5
;
//
 Invoke the delegate and display the output.
Console.WriteLine(
"
deleg(4) = {0}
"
, deleg(
4
));
//
 Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression
<
Func
<
int
bool
>>
 expr 
=
 i 
=>
 i 
<
 
5
;
//
 Compile the expression tree into executable code.
Func
<
int
bool
>
 deleg2 
=
 expr.Compile();
//
 Invoke the method and print the output.
Console.WriteLine(
"
deleg2(4) = {0}
"
, deleg2(
4
));
/**/
/*  This code produces the following output:
    deleg(4) = True
    deleg2(4) = True
*/
(2)Expression(TDelegate).Compile Method
编译lambda expression按照表达式树描述执行代码.
public TDelegate Compile()
返回值是TDelegate类型.
一个TDelegate类型的委托表示lambda expression按照Expression(TDelegate)描述.
注意:
在运行时编译方法产生一个TDelegate 类型的委托.当这个委托被执行的,它的行为按照Expression(TDelegate)语意来描述.
编译方法能被使用来获得任何表达式树的值.首先创建一个已经有使用Lambda方法的表达式的主体的lambda expression.之后调用编译获得委托,并且执行委托获得expression式的值.
//
 Lambda expression as data in the form of an expression tree.
System.Linq.Expressions.Expression
<
Func
<
int
bool
>>
 expr 
=
 i 
=>
 i 
<
 
5
;
//
 Compile the expression tree into executable code.
Func
<
int
bool
>
 deleg 
=
 expr.Compile();
//
 Invoke the method and print the output.
Console.WriteLine(
"
deleg(4) = {0}
"
, deleg(
4
));
/**/
/*  This code produces the following output:
    deleg(4) = True
*/

转载地址:http://kjioa.baihongyu.com/

你可能感兴趣的文章
百度、长沙加码自动驾驶,湖南阿波罗智行科技公司成立 ...
查看>>
10 个 Linux 中方便的 Bash 别名
查看>>
全新 DOCKER PALS 计划上线,带给您不一样的参会体验! ...
查看>>
Android开发之自定义View(二)
查看>>
python爬虫之微打赏(scrapy版)
查看>>
自制操作系统Antz day08——实现内核 (中) 扩展内核
查看>>
poj-1056-IMMEDIATE DECODABILITY(字典)
查看>>
阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据
查看>>
区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
查看>>
小程序爆红 专家:对简单APP是巨大打击
查看>>
FarBox--另类有趣的网站服务【转】
查看>>
在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件
查看>>
Distributed2:Linked Server Login 添加和删除
查看>>
Java中取两位小数
查看>>
使用 ftrace 调试 Linux 内核【转】
查看>>
唯一聚集索引上的唯一和非唯一非聚集索引
查看>>
Spark新愿景:让深度学习变得更加易于使用——见https://github.com/yahoo/TensorFlowOnSpark...
查看>>
linux磁盘配额
查看>>
NFS文件共享服务器的搭建
查看>>
%r 和 %s 该用哪个?
查看>>