|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得这个学习方法很重要。初学者应该跟我一样有同样一个毛病。那就是急于求成。很想就自己做出个小小的系统来。可真要动手,却又茫然而不知所措。为什么会这样呢?因为我们没有耐心去学习基础知识。写根本看不到什么效果的测试代码。MadsTorgersen给人人展现了C#中dynamic关头字的更多具体信息,和它的一些详细用法。并谈及在选用dynamic关头字之前,一些终极被放弃的替换计划计划。C#4将经由过程新的元范例“dynamic”来增加对前期绑定的撑持。任何间接声明为这类范例的变量,大概从函数中前往这类范例的值,都将主动地视为前期绑定。这相似于在VisualBasic中把变量声明为“object”,不外它如今能够撑持任何范例体系了,不单单是CTS(通用范例标准)和COM。一个主要的地方是,这个特征的方针就是为了撑持前期绑定,和更多地为了撑持最近盛行的静态绑定。静态范例分明不是C#的一个特征【译者注:意指C#是静态言语,原本无需静态范例的】,不外是为了撑持静态绑定的一个成果。还要侧重注重的一点是,反射并非一种很好的替换计划。利用反射的成绩在于,必要处置林林总总的范例。利用Reflection定名空间挪用办法的体例和在ScriptObject上挪用办法的体例其实不不异。特别,Ruby/Python办法如许的第三方办法。一种选择是用波形号作为静态操纵的前缀。惋惜,这类体例即刻也变得难以利用,特别在你入手下手研讨范例转换、数组索引和数学操纵符的中央:- objectd=GetDynamicObject();stringresult=~(string)d~[d~.Length~-1];
复制代码 下一个曾思索过的选择是静态高低文。相似unsafe和unchecked高低文那样,你可以标注恣意的代码块为“dynamic”。这类体例的成绩在于,它很难把静态和静态代码夹杂在一同。这类体例誊写的代码相似上面:- dynamic{//somedynamiccodestatic{//somestaticallyboundcodedynamic{//somedynamiccodeinsomestaticcode}//somemorestaticallyboundcode}//somemoredynamiccode}
复制代码 第三种计划是传布性的表达式。因为表达式的静态实质将发生向上传布的成绩。- objectd=GetDynamicObject();stringresult=(string)d[dynamic(d).Length-1];
复制代码 固然,它们选择的语法也不敷完善。固然可让人人容易地读懂代码,可是没有任何工具来标明一个静态挪用是在实践CallSite傍边被创立出来的。独一看到的信息是这个变量在那里声明的。- dynamicd=GetDynamicObject();stringresult=(string)d[d.Length-1];
复制代码 选用这类计划的关头缘故原由是,代码一定真的不敷平安。举行静态挪用自己就像之前抛出非常那样,不外如今你不必编写一切痴肥、易堕落的反射逻辑了。别的一个曾思索过的选择是用dynamic润色符来取代元范例。利用这类形式的代码以下所示,开辟职员可以初期绑定到Foo的办法上,而不是在任何工具长进行前期绑定。固然如许能够在一些界限情形下进步功能,不外它却增添了整体的庞大品级,如许的庞大度是难以承受的。- dynamicFood=GetDynamicFooObject();
复制代码 每逢静态组件进进到表达式中,全部表达式将大概成为静态的。这包含:
- 办法挪用
- 程序挪用
- 成员会见
- 操纵符使用
- 索引会见
破例是相称不言而喻的,转换和机关器将前往给你静态高低文。固然转换能被DLR范例体系所重写,可是DLR会把转换的了局指定为得当的范例。检察英文原文:MoreonDynamicSupportinC#
来自:http://www.infoq.com/cn/news/2009/04/Dynamic-CSharp
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。 |
|