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

数据分析网站购物网站的图片轮播怎么做

数据分析网站,购物网站的图片轮播怎么做,制作公司主页,十大免费货源网址目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容#xff0c;上篇文章介绍了表达式树的解析和编译。如果忘记了#xff0c;可以通过下面系列文章提供的…目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容上篇文章介绍了表达式树的解析和编译。如果忘记了可以通过下面系列文章提供的入口进行复习。这篇文章将介绍常见的表达式类型。 常见的表达式类型都有个共同的基类Expression。创建这些类型的对象是通过API的方式创建的也就是Expression的静态方法首先引入命名空间 1 using System.Linq.Expressions; 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型、自动属性、初始化器、匿名类 Linq之扩展方法 Linq之Expression初见 Linq之Expression进阶 变量表达式 在表达式树中使用ParameterExpression或者ParameterExpression表达式表示变量类型下面看一个例子我们定义一个int类型的变量i // ParameterExpression表示命名的参数表达式。ParameterExpression i Expression.Parameter(typeof(int),i); 或者使用 1 ParameterExpression j Expression.Variable(typeof(int), j); 通过f12转到定义发现这两个方法的注释几乎是一样的。静态方法Parameter第一个参数定义的参数类型第二个参数为参数名称。 常量表达式 在表达式树中使用ConstantExpression表达式表示具有常量值的表达式。看一个例子我们定义一个int类型的常量5.并将该值赋值给上面定义的变量i 1 // ParameterExpression表示命名的参数表达式。 2 ParameterExpression i Expression.Parameter(typeof(int), i); 3 //ParameterExpression j Expression.Variable(typeof(int), j); 4 ConstantExpression constExpr Expression.Constant(5, typeof(int)); 5 // 创建一个表示赋值运算的 System.Linq.Expressions.BinaryExpression 6 //表示包含二元运算符的表达式。 7 BinaryExpression binaryExpression Expression.Assign(i, constExpr); Constrant方法第一个参数常量第二个参数为什么类型的常量。 这里提到了BinaryExpression表达式该表达式标识包含二元运算符的表达式类似与这样的二元表达式都可以使用BinaryExpression表达式来表示。 调试模式下在自动窗口查看当前表达式的DebugView属性这个属性在调试表达式树的时候是非常有用的 变量 常量 二元表达式 通过观察上面的图可知变量调试模式下DebugView属性将显示前面带有“$”符号的 ParameterExpression 变量名称。那么如果参数没有名称则会为其分配一个自动生成的名称例如 $var1 或 $var2这里不再举例。 条件表达式 在很多时候我们都需要使用条件表达式来过滤一些数据然后返回满足条件的数据在表达式中有这样一些表达式满足你的需求。 常见运算符 , , if....then:如果满足条件那么.. if...then...else:如果满足条件执行某某代码否则执行另外的逻辑 一个例子 IfThenElse方法 1 public static ConditionalExpression IfThenElse( 2 Expression test, 3 Expression ifTrue, 4 Expression ifFalse 5 ) 1 bool test true;2 ConditionalExpression codition Expression.IfThenElse(3 //条件4 Expression.Constant(test),5 //如果条件为true调用WriteLine方法输出“条件为true”6 Expression.Call(7 null,8 typeof(Console).GetMethod(WriteLine, new Type[] { typeof(string) }),9 Expression.Constant(条件为true) 10 ), 11 //如果条件false 12 Expression.Call( 13 null, 14 typeof(Console).GetMethod(WriteLine, new Type[] { typeof(string) }), 15 Expression.Constant(条件为false) 16 ) 17 ); 18 //编译表达式树输出结果 19 Expression.LambdaAction(codition).Compile()(); 输出结果  例子描述条件test包装为常量表达式因为test为true所以执行iftrue的表达式并调用WriteLine方法打印出信息。 赋值表达式 还以上面为变量i赋值的例子为例 1 ParameterExpression i Expression.Parameter(typeof(int), i); 2 //ParameterExpression j Expression.Variable(typeof(int), j); 3 ConstantExpression constExpr Expression.Constant(5, typeof(int)); 4 // 创建一个表示赋值运算的 System.Linq.Expressions.BinaryExpression 5 //表示包含二元运算符的表达式。 6 BinaryExpression binaryExpression Expression.Assign(i, constExpr); 1 BinaryExpression b2 Expression.AddAssign(i, constExpr); - 1 BinaryExpression b3 Expression.SubtractAssign(i, constExpr); * BinaryExpression b4 Expression.MultiplyAssign(i, constExpr); / 1 BinaryExpression b5 Expression.DivideAssign(i, constExpr); 举一个例子 1 ParameterExpression i Expression.Parameter(typeof(int), i);2 BlockExpression block Expression.Block(3 new[] { i },4 //赋初值 i55 Expression.Assign(i, Expression.Constant(5, typeof(int))),6 //i5 107 Expression.AddAssign(i, Expression.Constant(5, typeof(int))),8 //i-5 59 Expression.SubtractAssign(i, Expression.Constant(5, typeof(int))), 10 //i*5 25 11 Expression.MultiplyAssign(i, Expression.Constant(5, typeof(int))), 12 //i/5 5 13 Expression.DivideAssign(i, Expression.Constant(5, typeof(int))) 14 ); 15 Console.WriteLine(Expression.LambdaFuncint(block).Compile()()); 结果 二元运算符表达式 在上面也提到了部分二元运算符表达式类似加减乘除这样的运算符对于二元运算符就不再举例。这些返回的表达式树都可以使用BinaryExpression来接收或者使用基类Expression接收或者更省事使用var关键字。 一元运算符表达式 类似--运算符 i等价于ii1运算顺序就是i先加1然后再赋值给i。在表达式书中使用Expression的PostIncrementAssign方法来进行自增或者自减操作。返回结果为UnaryExpression类型同样可以使用基类Expression接收或者var。 循环表达式 在表达式树中使用Expression的Loop方法实现循环。 块表达式 在前面的文章中也说了不能使用Lambda方式创建带块级的表达式树不然会有如下的错误 通过API的方式可以创建块级表达式树其中Expression的Block方法功不可没。例如上面的加减乘除的例子中可以包括多个Expression。 那么下面就举一个包含自增的一元表达式循环的表达式块并输出结果。 输出1-100之间的所有偶数。 1 class Program2 {3 static void Main(string[] args)4 {5 //变量i6 ParameterExpression i Expression.Parameter(typeof(int), i);7 //跳出循环8 LabelTarget label Expression.Label();9 BlockExpression block Expression.Block( 10 new[] { i }, 11 //为i赋初值 12 Expression.Assign(i, Expression.Constant(1, typeof(int))), 13 Expression.Loop( 14 Expression.IfThenElse( 15 //如果i100 16 Expression.LessThanOrEqual(i, Expression.Constant(100, typeof(int))), 17 //如果为true.进入循环体 18 Expression.Block( 19 Expression.IfThen( 20 //条件i%20; 21 Expression.Equal(Expression.Modulo(i, Expression.Constant(2, typeof(int))), 22 Expression.Constant(0, typeof(int))), 23 Expression.Call(typeof(Console).GetMethod(WriteLine, 24 new Type[] { typeof(int) }), new[] { i })), 25 //i 26 Expression.PostIncrementAssign(i) 27 ), 28 //如果i100 29 Expression.Break(label)), 30 label 31 )); 32 Expression.LambdaAction(block).Compile()(); 33 Console.Read(); 34 } 35 } 结果 总结 本篇文章介绍了几种常见的表达式类型当然还有很多并没有列出比如switch casetry catch等。如果在项目中需要创建复杂的表达式树Expression的静态方法Block是必不可少的。希望通过本篇的学习对你了解Expression有所帮助。 参考文章 https://msdn.microsoft.com/zh-cn/library/dd323961(vvs.110).aspx https://msdn.microsoft.com/zh-cn/library/bb397951.aspx转载于:https://www.cnblogs.com/wolf-sun/p/4234747.html
http://www.pierceye.com/news/496279/

相关文章:

  • 某学校网站建设方案论文沛县网站制作
  • 网站的在线支付怎么做用别人的二级域名做网站
  • 做宣传册从哪个网站找素材吉林省吉林市是几线城市
  • 互助盘网站怎么做的北京做兼职网站有哪些
  • jsp 网站开发教程多语言外贸网站建设
  • 免费销售网站模板下载安装济南网站制作推广
  • 青岛专业网站制作设计vs2008网站开发
  • 电子商务网站功能介绍0基础做网站用什么语言
  • 企业展示网站建设wordpress 优酷免广告
  • 濮阳做网站引导企业做网站
  • 卧龙区网站建设找做牙工作上哪个网站
  • 做网站的会计分录广州公司注册需要什么条件
  • 小米4路由器可以做网站嘛服务类网站建设服务公司
  • 电子商务网站建设规划书实例注册微信公众平台
  • 网站设计课程总结线上营销方案
  • 谷城网站建设网站集群建设实施方案
  • 怎么做外贸生意谷歌seo服务
  • 做网站好还是做淘宝好市场调研模板
  • 网站做换肤做一个平台费用是多少
  • 省内注销二建 建设部网站更新慢网站建设合同书封皮
  • 天津城市建设网站营销型网站的好处
  • 网站建设维护文档好看的页面
  • 网站搜索优化官网网站建设在电子商务中的作用的看法
  • 网站推广费用价格html大屏展示模板
  • 编辑网站用什么软件网站开发人员职责
  • 网站搜索引擎提交wordpress发布站点
  • 阳春网站建设天水网站seo
  • 仙桃市建设局网站wordpress链接前面的图标
  • 温州市城乡建设建档案馆网站公司装修费用可以一次性入账吗
  • 房地产开发公司网站宠物网页设计模板