黑马程序员 一秒学会Lambda表达式

原创 2013年12月05日 20:30:57
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

匿名方法:在匿名方法的语法中,delegate表达式关键字是有点多余,因为编译器已经知道我们在奖方法赋值给委托。

从匿名到lambda表达式:删除delegate关键字,在参数列表和匿名方法主体这间放lambda运算符=>.(lambda运算读作“goes to”)
 例: MyDel del = delegate(int x)   { return x + 1;};  //匿名方法
      MyDel le1 =         (int x) =>{ return x + 1;};  //Lambda表达式

这种简单的转换简洁了一点,然而,编译器可以通过推断,允许我们更进一步简化Lambda表达,如下:
1.编译器还可以从委托的声明中知道委托参数的类型,因此lambda表达式允许我们省略类型参数,如le2.(带有类型的参数列表称为显示类型,省略类型的参数列表称为隐式类型)
2.如果只有一个隐式类型参数,我们可以省略周围的圆括号,如le3.
3.最后,lambad表达式允许表达式的主体是语句块或表达式,如果语句块包含了一个返回语句,我们可以将语句块替换为return关键字后的表达式,如le4.
MyDel del = delegate(int x)   { return x + 1;};  //匿名方法
MyDel le1 =         (int x) =>{ return x + 1;};  //Lambda表达式
MyDel le2 =             (x) =>{ return x + 1;};  //Lambda表达式
MyDel le3 =               x =>{ return x + 1;};  //Lambda表达式
MyDel le4 =               x =>         x + 1  ;  //Lambda表达式
这样看起来,是不是更简洁多了,更容易理解了,呵呵!

总结:有关lambda表达式的参数列表的要点如下,
1.lambda表达式参数列表中的参数必须在参数数量、类型和位置上与委托相匹配
2.表达式的参数列表中的参数不一定需要包含类型(如隐式类型),除非委托有ref或out参数—此时类型是必须的(如显式类型)
3.如果只有一个参数,并且隐式类型的,周围的圆括号可以被省略,否则它就是必须的。
4.如果没有参数,必须使用一组空的圆括号。
   

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

一秒学会Lambda表达式

转载http://blog.csdn.net/u010424693/article/details/17148527 匿名方法:在匿名方法的语法中,delegate表达式关键字是有点多余,因为编译器...
  • dlnuchunge
  • dlnuchunge
  • 2013年12月07日 17:25
  • 1014

java 日期和字符串互转,根据当天整天时间 得到当天最后一秒的日期时间

java 日期和字符串互转,根据当天整天时间 得到当天最后一秒的日期时间
  • liangrui1988
  • liangrui1988
  • 2014年06月17日 12:59
  • 3541

读书笔记2 《学会花钱》 野口真人

根本:我们得到的价值是否大于支出的金钱(价格)
  • m0_37890694
  • m0_37890694
  • 2017年03月14日 15:26
  • 823

学会学习 读书笔记

从小学到大学之前,一直都是学习课本知识,并没有多少自主学习的意识,到了大学和研究生之后,虽然自己也有主动去学习,但是一直觉得收获并不是那么大,没有明确的目标,多多少少也看过一些书,但是仅仅局限于看过,...
  • wendy_fly
  • wendy_fly
  • 2016年06月10日 11:51
  • 639

js实现多张图片每隔一秒换一张图片

html代码 "UTF-8"> "text/javascript" src="/plugin/jquery-easyui-1.4.3/jquery.min.js"...
  • qiupu4667
  • qiupu4667
  • 2017年04月18日 19:50
  • 1821

猫都能学会的Unity3D Shader入门指南(一)

动机 自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入一些的层次几乎没有了解。虽然说Unity引擎设计的初衷就是创建简单的不需要开发...
  • zhuangyou123
  • zhuangyou123
  • 2014年05月17日 16:11
  • 12986

十天学会web标准(DIV+CSS)系列(十)div+css网页标准布局实例教程

一、建立站点 前面的课程都是零碎讲解一些相关知识,那么要做一个网站,首先需要建立一个站点。那么什么是站点,为什么要建立一个站点呢?因为网站不同于其它文件,比如一个图片,放到哪个盘哪个目录下都可以访问...
  • jarniyy
  • jarniyy
  • 2016年03月21日 14:46
  • 3746

《数据之美:一本书学会可视化设计》

什么是数据可视化 数据可视化就是数据可视化,再直白不过了,它和 JSON 和 XML 没有本质的区别,只是数据的一种呈现方式而已。 什么是数据 数据是对现实世界的简化和抽象表达,可视化数据就是对...
  • wozaixiaoximen
  • wozaixiaoximen
  • 2016年12月21日 08:32
  • 1173

我是怎样在40分钟之内学会发颤音(大舌音)R的

http://page.renren.com/601520776/note/876638396 在这期间,我还在不断地与那同事聊天,说到德语很多词汇与英语相似(因为那同事的第一外语是俄语,后来又没有再...
  • musiccow
  • musiccow
  • 2013年07月17日 13:26
  • 34647

Maven in 5 Minutes(5分钟学会使用Maven)

Prerequisites(预备知识) You must have an understanding of how to install software on your computer. If ...
  • daven_java
  • daven_java
  • 2013年04月07日 14:39
  • 2547
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员 一秒学会Lambda表达式
举报原因:
原因补充:

(最多只允许输入30个字)