- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。类型名由编译器生成,并且不能在源代码级使用。这些属性的类型由编译器推断。 若要创建一个匿名类型的对象,可以使用类似于对象初始化器的语法,由于匿名类型没有名字,所以只能使用var关键字修饰,其语法格式如下: var 【匿名类型的对象的名称】 = new { 【一组只读属性】 } 使用匿名类型时需要注意以下几点: 匿名类型虽然没有名字,但它仍然是类型,在运行期,编译器会为其自动生成名字。 在使用匿名类型时,若离开了定义该类型的方法,我们将无法再以强类型的方式使用此匿名类型的实例。这也就意味着若是希望将某个匿名类型的实例传递给另外一个方法的话,该方法的这个参数的类型只能为Object,而不能为其他任何更精确的类型。 匿名类型的实例是不可变的,也就是说一旦创建了一个匿名类型的实例,那么该实例的各个属性值就永远地确定下来,不能进行修改。 17.2.5 匿名类型对象 【例17-5】 创建一个控制台应用程序,在Main方法中定义一个匿名类型,用来描述学生的相关信息(包括学生名称、年龄及地址),同时实例化该匿名类型;然后输出该匿名类型的实例的属性值,具体代码如下。(实例位置:光盘\MR\源码\第17章\17-5) static void Main(string[] args) { //定义匿名类型,并实例化 var student = new { name = 东方,Age=30,Address = 吉林省长春市}; Console.WriteLine(该学生的信息为:\n姓名:{0}、年龄:{1}、地址:{2},student.name,student.Age,student.Address); //输出匿名类型的实例的属性值 Console.Read(); } 程序运行结果如图17-5所示。 图17-5 定义并实例化匿名类型 在C#2.0中引入了匿名方法,它允许把原来要用委托传入的参数直接使用方法体来替换,这在一定程度上降低了代码量。在C#语言的新技术中引入了Lambda表达式,Lambda表达式可以应用于任何匿名方法可以应用的场合(即使用Lambda表达式替换匿名方法),而且与匿名方法相比,Lambda表达式显得更简洁和易用。 所有的Lambda 表达式都使用Lambda运算符(=),该Lambda运算符的左边是输入参数(当然输入参数也可以没有),右边包含表达式或语句块,其语法格式如下: 【输入参数列表】=【表达式或语句块】; 说明: 输入参数的个数不限制,多个参数之间用逗号隔开,当然也可以没有参数。 当Lambda运算符(=)左侧只有一个参数时,这个参数无需使用括号“()”括起来,如图17-6所示。 图17-6 一个参数的Lambda表达式 17.2.6 Lambda 表达式 Lambda运算符(=)左侧可以包含多个参数,如果参数超过1个,必须使用括号“()”括起来,参数之间使用逗号分隔。多参数的Lambda表达式如图17-7所示。 图17-7 多个参数的Lambda表达式 另外,根据Lambda运算符(=)右侧表达方式的不同,Lambda表达式分为以下两种: (1)Lambda运算符右边是表达式的叫做表达式Lambda,如下面的例子。 【例17-6】 定义3个表达式Lambda,第一个无输入参数,第二个只有一个输入参数,第三个有3个输入参数,示例如下。 () = 1 //无参表达式Lambda (x) = x % 2==0 //一个参数的表达式Lambda (x,y,z) = (x+y)*z //多个参数的表达式Lambda (2)Lambda运算符右边是一个大括号括起来的任意多条语句叫做语句Lambda,如下面的例子。 【例17-7】 定义2个语句Lambda,第一个只有一个输入参数,第二个有两个输入参数,示例如下。 x = { return x*10; } //一个参数的语句Lambda (x,y) = { return x+y; } //两个参数的语句Lambda 说明: 语句Lambda除需要使用大括号之外,它与表达式Lambda在语法上没有什么区别,但当需要处理多条语句时,建议使用语句Lambda。 下面通过一个完整的例子来讲述如何使用Lambda表达式。 【例17-8】 创建一个控制台应用程序,定义一个描述商品的类Goods;然后在应用程序默认类Program中定义一个静态方法FilterGoods,该方法实现获取符合筛选条件的商品,并且该方法的第一参数类型为Pred
您可能关注的文档
- C#网络编程技术教程 教学课件 作者 金华 华进 第6章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第7章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第8章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第9章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第10章.ppt
- C#网络编程技术教程 教学课件 作者 金华 华进 第11章.ppt
- C#网络应用编程 第2版 教学课件 作者 马骏 第0章 课程介绍.ppt
- C#网络应用编程 第2版 教学课件 作者 马骏 第01章 概述.ppt
- C#网络应用编程 第2版 教学课件 作者 马骏 第02章 进程与线程.ppt
- C#网络应用编程 第2版 教学课件 作者 马骏 第03章 IP地址转换与网卡信息检测.ppt
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 2022医院医疗机构开展违反中央八项规定精神突出问题专项治理的实施方案(详细版).pdf VIP
- 半导体工艺炉的炉门及半导体工艺炉.pdf VIP
- 测绘行业安全生产汇报.pptx VIP
- 半导体后端工艺半导体封装的作用、工艺和演变.docx VIP
- 半导体工艺原理--半导体工艺原理(贵州大学).ppt VIP
- 麦肯锡中国银行业CEO季刊(2020年秋)-麦肯锡-224页正式版.pdf VIP
- 走进潮汕文化ppt课件(优质ppt).pptx
- DG_TJ 08-2439-2024 建筑工程“多测合一”技术标准(正式版).pdf VIP
- Camera客观标准测试.pdf VIP
- 2024年湖北省恩施州恩施市六角亭街道招聘社区工作者真题参考答案详解.docx VIP
文档评论(0)