动态类型绑定和命名参数,可选参数都为CLR的COM互操作提供了便利。有了动态类型,访问COM对象时就不必再对返回的COM对象进行显式的类型转换了,因为返回的是一个dynamic类型的对象,可以直接在它上面调用方法/属性/索引器等,例如excelApp.Cells[row,column].Value="some value";这里的Cells[row,column]返回的是一个dynamic类型的对象,而之前都是返回的object,需要显式转换才能操作它,比如:((Excel.Range)excelApp.Cells[row,column]).Value="some value"。
有了可选参数,开发人员再也不用Type.Missing来填充整个参数列表了,比如Office12的Excel.ApplicatioinClass中就利用了可选参数定义了一个intersect方法:
而在以前的版本中,需要手动指定这30个参数。
在性能方面,由于C#4.0中编译器可以把PIAs按需部分编译到的程序集中,所以不必每次都完全载入这组庞大的互操作程序集,这对提高COM交互性能很有帮助。另外还有一个语法就是在COM调用的时候可以不使用ref传递参数,不过这里不使用ref并不代表不按引用传递而按值传递,实际上C#编译器会自行帮助创建临时变量并仍然按引用把参数传递给调用者。(www.xing528.com)
注意
C#4.0中很大一部分特征弥补了它之前的一些令开发者不满意的地方,无论是动态类型还是可选参数,新的C#让那些和各种组件(COM、IronPython等等)打交道的程序员获得一定程度的解脱。C#越来越变得以人为本,更确切地说,以程序员为本。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。