- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VS 2010 和 .NET 4.0 系列之《 C# 4 中的可缺省参数和具名实参(以及ASP.NET MVC 2中的一个很酷的场景)》篇
By?SAUCER?|?Published:?2010 年 09 月 29 日
【原文地址】?Optional Parameters and Named Arguments in C# 4 (and a cool scenario w/ ASP.NET MVC 2)?【原文发表日期】 Friday, April 02, 2010 1:28 AM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过/scottgu跟随我。】
这是我针对即将发布的VS 2010 和 .NET 4所撰写的?贴子系列的第十七篇。
今天的贴子讨论新加到C# 4.0中的2个语言特性: 可缺省参数(optional parameters)和具名实参(named arguments),以及在ASP.NET MVC 2(VB 和 C#)中一种利用可缺省参数的很酷的方式。
C# 4.0中的可缺省参数
C# 4.0现在对方法,构造器,以及索引器支持使用可缺省的参数(注:VB支持可缺省参数可是有年头了)。
当参数的默认值作为声明的一部分被指定的时候,参数就是可缺省的。例如,下面这个方法接受2个参数,一个“category” 字符串参数,另一个“pageIndex”整数参数。“pageIndex”参数有一个默认值 0,它因此是一个可缺省的参数:
当调用上面的方法时,我们可以显式地传递2个参数给它:
或者我们可以省略掉传递第二个参数,在这样的情形下,其默认值0就会被传进去:
?
注意,VS 2010的Intellisense在显示语句完成时,会表示哪个参数是可缺省的,以及它的默认值:
C# 4.0中的具名实参和可缺省参数
C# 4.0现在还支持“具名实参”的概念。这允许你把传给一个方法的参数显式地命名,而不是通过实参的位置来识别它。
例如:我可以编写下面这样的代码,通过其名称来识别传给GetProductsByCategory方法的第二个参数(将其用法变得更为明确一点):
当一个方法支持多个可缺省参数,而你想要指定在传递哪个实参时,具名实参会非常有用。例如,下面我们有一个DoSomething方法,其接受2个可缺省参数:
我们可以使用具名实参,以下面任何一种方式来调用上面这个方法:
因为2个参数都是可缺省的,在只有1个(或者0个)参数被指定的情形下,那个没被指定的参数的默认值就会被传进去。
ASP.NET MVC 2 和可缺省参数
有一个非常棒的使用场景,我们可以在其中利用VB 和 C#中可缺省参数支持,那就是ASP.NET MVC 2中控制器类上的Action方法的输入绑定支持。
例如,考虑一个我们想要把“Products/Browse/Beverages” 或 “Products/Browse/Deserts”这样的URL映射到一个控制器action方法的场景。我们可以编写一个URL导向规则,将URL映射到一个方法上,象这样:
然后,我们可以选择使用一个“page”查询字符串值来表示由Browse方法显示的结果是否应该是分页的,如果是分页的,应该显示结果的哪一页。例如,/Products/Browse/Beverages?page=2。
在 ASP.NET MVC 1中,你一般这样处理,在action方法上添加一个“page” 参数,将其设置为?nullable int?(意味着如果“page”查询字符串值不存在的话,其值就是null)。然后你可以编写象下面这样的代码,将?nullable int?转换成一个?int,如果查询字符串中不存在值的话,就赋予一个默认值:
在ASP.NET MVC 2中,你现在可以利用VB 和 C#中的可缺省参数支持,来更简明,更清晰地表达这个行为。只要将action方法的参数声明为带默认值的可缺省参数即可:
C#
VB
如果查询字符串有“page” 值的话(例如 /Products/Browse/Beverages?page=22 ),它就会以一个整数传给该action方法。如果查询字符串没有“page” 值的话 (例如 /Products/Browse/Beverages),默认值0就会被传给该action方法。这使得代码更加简明,可读性也提高了。
结语
VS 2010 中的 C# 和 VB 带有一堆很棒的新语言特性。上述2个特性(可缺省参数和具名实参)是其中2个而已,在以后我还会在博客中讨论更多其他的新特性。
如果你在寻找一本总结了C#中所有语言特性(包括C# 4.0中的),以及对核心.NET类库有很好的概述的好书的话,你也许应该查阅一下 O’Reilly出版社新出版的《C#
您可能关注的文档
最近下载
- 新时代中国特色社会主义理论与实践课件-2024年高教版研究生新中特教材.pdf VIP
- GB 31335-2024 铁矿开采和选矿单位产品能源消耗限额.docx VIP
- 北师大版五年级上册小数除法竖式计算练习100道及答案.docx VIP
- 山东科技出版社劳动实践指导手册二年级第2课清洁与卫生小件衣物清洗洗袜子 教案.doc VIP
- 2025年全球矿业报告:着眼未来.pptx VIP
- 压力容器使用单位每月压力容器安全调度会议纪要.doc VIP
- 原油进口联营协议.pdf VIP
- JB∕T 14641-2022 计算机和数据处理机房用间接蒸发冷却空调机组.pdf
- 西门子S7-1500 PLC编程及应用-全套PPT课件.pptx
- VCS56055160ArcWelding正版分享[共14页].pdf VIP
文档评论(0)