- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                C  4动态编程新特性和DLR剖析
                    C 4动态编程新特性与DLR剖析
作者:金旭亮发表于2010-08-18 19:11原文链接阅读:138评论:0
拓展动态编程的新领域
--C#4动态编程新特性与DLR剖析
===
注:
很久没有发文了,贴一篇新文吧。从Word直接贴过来的,没仔细排版,诸位海涵。
有关DLR和C#4动态特性的详细介绍,请参看本人拙著《.NET 4.0面向对象编程揭秘(应用篇)》,目前该书正处于编辑出版流程中,估计12月上市。
与此书相关的技术资源,将陆续发布于博客园与CSDN的本人博客。
金旭亮
===
近几年来,在TIOBE公司每个月发布的编程语言排行榜[1]中,C#总是能挤进前10名,而在近10年的编程语言排行榜中,C#总体上呈现上升的趋势。C#能取得这样的成绩,有很多因素在起作用,其中,它在语言特性上的锐意进取让人印象深刻(图1)。
图1 C#各版本的创新点
2010年发布的C#4,最大的创新点是拥有了动态编程语言的特性。
1动态编程语言的中兴
动态编程语言并非什么新鲜事物,早在面向对象编程语言成为主流之前,人们就已经使用动态编程语言来开发了。即使在Java、C#、C++等面向对象编程语言繁荣兴旺、大行于世的年代,动态编程语言也在悄悄地攻城掠地,占据了相当的开发领域,比如JavaScript业已成为Web客户端事实上的主流语言。
最近这几年,动态编程语言变得日益流行,比如Python、Ruby都非常活跃,使用者众多。
这里有一个问题,为什么我们需要在开发中应用动态编程语言?与C#和Java这类已经非常成熟且功能强大的静态类型编程语言相比,动态编程语言有何优势?
简单地说,使用动态编程语言开发拥有以下的特性:
(1)支持REPL(Read-evaluate-print Loop:读入à执行à输出循环迭代)的开发模式,整个过程简洁明了,直指问题的核心。
举个简单的例子,图2所示为使用IronPython[2]编程计算1+2+…+100的屏幕截图,我们可以快速地输入一段完成累加求和的代码,然后马上就可以看到结果:
图2使用IronPython编程
如果使用C#开发就麻烦多了,您得先用Visual Studio创建一个项目,然后向其中添加一个类,在类中写一个方法完成求和的功能,再编写调用这一方法的代码,编译、排错,最后才能得到所需的结果…
很明显,对于那些短小的工作任务而言,动态编程语言所具备的这种REPL开发模式具有很大的吸引力。
(2)扩展方便。用户可以随时对代码进行调整,需要什么功能直接往动态对象上加就是了,不要时又可以移除它们。而且这种修改可以马上生效,并不需要像C#那样必须先修改类型的定义和声明,编译之后新方法才可用。
换句话说:使用动态语言编程,不需要重量级的OOAD,整个开发过程迭代迅速而从不拖泥带水。
(3)动态编程语言的类型解析是在运行时完成的,可以省去许多不必要的类型转换代码,因此,与静态编程语相比,动态编程语言写的代码往往更紧凑,量更少。
动态编程语言主要的弱点有两个:
(1)代码中的许多错误要等到运行时才能发现,而且需要特定的运行环境支持,对其进行测试不太方便,也不支持许多用于提升代码质量的各种软件工程工具,因此不太适合于开发规模较大的、包容复杂处理逻辑的应用系统。
(2)与静态编程语言相比,动态编程语言编写的程序性能较低。不过随着计算机软硬件技术的不断进步,比如多核CPU的广泛应用,动态编程语言引擎和运行环境不断地优化,动态编程语言编写的程序性能在不断地提升,在特定的应用场景下,甚至可以逼近静态语言编写的程序。
2拥抱动态编程特性的C#4
为了让C#、Visual Basic等.NET编程语言能具备动态编程语言的特性,.NET 4.0引入了一个DLR(Dynamic Language Runtime:动态语言运行时)(图3)。
图3 DLR:动态语言运行时
DLR运行于CLR之上,提供了一个动态语言的运行环境,从而允许Python、Ruby等动态语言编写的程序在.NET平台上运行,同时,现有的.NET静态类型编程语言,比如C#和Visual Basic,也可以利用DLR而拥有一些动态编程语言的特性。
(1)使用C#4编写动态的代码
C#4新增了一个dynamic关键字,可以用它来编写动态的代码。
例如,以下代码创建了一个ExpandoObject对象(注意必须定义为dynamic):
dynamic dynamicObj=new ExpandoObject();
这一对象的奇特之处在于,我们可以随时给它增加新成员:
dynamicObj.Value=100;//添加字段
dynamicObj.Increment=new Action(()=dynamicObj.Value++);//添加方法
这些动态添加的成员与普通的
                您可能关注的文档
- 2011年一级建造师资格考试机电工程管理和实务精讲通关(张凤众).doc
 - 2011年会计从业资格无纸化考试财经法规和职业道德题库练习汇总.doc
 - 2011年全国自考思想道德修养和法律基础模拟试卷.pdf
 - 2011年全国一级建造师执业资格考试建筑工程管理和实务.pdf
 - 2011年全国自考概率论和数理统计_经管类_试题.pdf
 - 2011年全国造价工程师执业资格考试工程造价管理基础理论和相关法规讲义_0002.pdf
 - 2011年全国自考教育统计和测量模拟试卷.pdf
 - 2011年全国造价工程师执业资格考试工程造价管理基础理论和相关法规讲义.pdf
 - 2011年公路工程监理工程师资格考试道路和桥梁教材浓缩小抄.pdf
 - 2011年农业专业知识和实务模拟试题及答案01-经济师.pdf
 
原创力文档
                        

文档评论(0)