当前位置: 首页 > news >正文

网站新闻发布后前台不显示/seo关键词查询

网站新闻发布后前台不显示,seo关键词查询,wordpress的图片插件,学习java可以自己做网站吗表达式树 以前没听过表达式树,只听过表达式,而且听过Lambda表达式,首先介绍一下.NET里表达式树的核心概念:讲代码作为数据,他将一些代码表示为一个对象树,树中的每个节点本身都是一个表达式,不同的表达式类型代表能在代码中执行不同操作:二元操作,一元操作,方法调用等等. Syste…

表达式树

以前没听过表达式树,只听过表达式,而且听过Lambda表达式,首先介绍一下.NET里表达式树的核心概念:讲代码作为数据,他将一些代码表示为一个对象树,树中的每个节点本身都是一个表达式,不同的表达式类型代表能在代码中执行不同操作:二元操作,一元操作,方法调用等等.

 

System.Linq.Expression命名空间包含了代表表达式的各个类.所有的表达式类都从Expression

类派生,Expresssion是个抽象类,主要包括的是一些静态方法,这些方法用于生成其他表达式类的实例.Expression类还包含了两个重要属性:

Type属性:代表了表达式求值结果的类型.比如,一个,一个表达式是要获取一个字符串的Length属性,那么该表达式的Type属性应为int类型.

 

NodeType属性:代表了表达式的种类.这个种类表示成Expression Type美剧的一个成员:LessThan,Invoke,

Multiply,MemberAccess(好像有80多种).

 

 

案例:

            Expression firstArg = Expression.Constant(2);

            Expression secondArg = Expression.Constant(4);

            Expression add = Expression.Add(firstArg, secondArg);

 

 

            Console.WriteLine(add);

            //输出结果为 : <2 + 4>

            Console.ReadKey();

 

 

分析:上述表达式会生成如下表达式:

 

 

我突然这么一说,你肯定觉得我在忽悠你,我骗人,像我这样的正人君子不会骗你的.表达式中的”叶”表达式在代码中是最先创建的:表达式时自下而上构建的.这是由”表达式不易变”这一事实实现的.

 

将表达式树编译成委托

LambdaExpression是从Expression派生的类型.泛型类Expression<TDelegate>是从LamdaExpression派生的,其中反省参数TDelegate必须是委托类型.

 

LambdaExpression有个Comlile方法能创建恰当类型的一个委托.而Expression<TDelegate>的Compile方法返回TDelegate类型的委托.案例如下:

            Expression firstArg = Expression.Constant(2);

            Expression secondArg = Expression.Constant(4);

            Expression add = Expression.Add(firstArg, secondArg);

 

 

            Expression<Func<int>> func = Expression.Lambda<Func<int>>(add);

            Func<int> compiled = func.Compile();

            Console.WriteLine(compiled);

            Console.ReadKey();

 

分析:我们通过Expression.Lambda<TDelegate>(Expression expression)方法来创建Expression<TDelegate>类型对象,再调用其Complie方法获取表达式树编译出的委托实例.

 

 

将C#Lambda表达式转换成表达式树

我们知道Lambda表达式能显示或隐式的转换成恰当的委托实例.但是,编译器也能轻松的将Lambda表达式构建成一个表达式树:

将Lambda表达式转换成表达式树

Expression <Func<int>> return 5=()=>5;

但是,并不是所有的Lambda表达式都能转换成表达式树,有一些限制:不能将带有一个语句块的Lambda转换成一个表达式树----只有对的那个表达式进行求值的Lambda才可以.表达式中不能包含赋值操作,因为表达式树中表示不了这种操作.还有其他一些较少见的限制,总而言之,如果存在转换问题,会在编译时发现.

 

位于LINQ核心的表达式树

表达式树可以说是LINQ的核心之一,为什么是LINQ的核心之一呢?因为表达式树使得C#不再是仅仅能编译成IL,我们可以通过C#生成一个表达式树,将结果作为一个中间格式,在将其转换成目标平台上的本机语言.比如SQL.我们常用的LINQ to SQL就是这样生成的.

下图展示了LINQ to Objects和LINQ to SQL的不同路径

                   

 

 

 

 

 

 

表达式树的用途:

通过Expression的派生类中的各种节点类型,我们就可以构建表达式树;然后可以把表达式树转换成相应的委托类型实例,最后执行委托实例的代码,但是我们不会绕这么大的弯子来执行委托实例的代码.

 

表达式树主要在LINQ to SQL中使用,我们需要将LINQ to SQL查询表达式(返回Queryable类型)转换成表达式树.之所以需要转换是因为LINQ to SQl查询表达式不是在C#代码中执行的,LINQ to SQL查询表达式被转换成SQL,通过网络发送,最后在数据库服务器中执行.

 

转载于:https://www.cnblogs.com/android-blogs/p/6625283.html

http://www.lbrq.cn/news/826741.html

相关文章:

  • 事业单位网站备案/百度seo多久能优化关键词
  • 微信分销网站建设哪家好/重庆网站页面优化
  • 企业网站建设方式/企业营销型网站建设
  • 河北交通建设投资集团公司网站/千峰培训可靠吗?
  • 太原网页设计师/seo技术学院
  • 企业自助建站软件/免费的api接口网站
  • 公司网站建设完成通知/seo优化按天扣费
  • 宜兴做网站的联系方式/市场seo是什么
  • 内容电商的网站如何做/发稿服务
  • 哈尔滨网站制作公司/seo免费诊断联系方式
  • 网站建设服务领域/公司网站优化
  • 怎么用新浪云做网站/网站优化排名软件网
  • 专业网站制作公司/商丘搜索引擎优化
  • 网站运营计划书/企业培训机构有哪些
  • 利为汇网站建设/国内最新消息新闻
  • 摄影网站建立/网络营销公司怎么注册
  • 金融网站可以做公安备案/推广关键词
  • 会展网站建设情况/html网页制作代码大全
  • linux系统网站建设/百度搜索热度指数
  • o2o网站建设如何/快速搭建网站的工具
  • 简单的网站/免费网站建设哪家好
  • 交通设施东莞网站建设/网络营销方案案例
  • 部门做网站优点/淘宝网店的seo主要是什么
  • 有做公司网站/上海快速排名优化
  • 深度开发/网店seo关键词
  • 老网站不要了做新站需要怎么处理/网络舆情管控
  • 常州网站开发公司/上海网络推广公司网站
  • 重庆网站开发公/网络游戏营销策略
  • 做网站要会写代码吗/济南做网站公司哪家好
  • 成都企业建站系统/今天新闻头条最新消息
  • XTTS实现语音克隆:精确控制音频格式与生成流程【TTS的实战指南】
  • LVS-----TUN模式配置
  • 深度学习图像分类数据集—八种贝类海鲜食物分类
  • LeetCode 198 打家劫舍 LeetCode 213.打家劫舍II
  • 音视频学习(四十一):H264帧内压缩技术
  • 【C++基础】面试高频考点解析:extern “C“ 的链接陷阱与真题实战