WEB开发网
开发学院软件开发C语言 C# 4.0、动态关键字与 COM 阅读

C# 4.0、动态关键字与 COM

 2010-09-30 22:44:44 来源:WEB开发网   
核心提示: C# 4.0 还通过识别成员声明中的默认值来实现可选参数,这意味着,C# 4.0、动态关键字与 COM(3),在调用拥有可选参数的成员时,可以省略可选参数,站点对象负责实时将方法绑定到对象,图 2 显示了真实代码的充分简化版本,而且,既可以按名称也可以按位置来传递参数

C# 4.0 还通过识别成员声明中的默认值来实现可选参数。这意味着,在调用拥有可选参数的成员时,可以省略可选参数。而且,既可以按名称也可以按位置来传递参数。最后,C# 4.0 中改进的 COM 绑定功能意味着以前是静态且强类型化的语言现在也支持脚本语言的一些常见功能。在您了解如何利用新的动态关键字,实现与 COM 对象的流畅操作之前,让我们稍稍深入了解一下动态类型查询的内部机制。

动态语言运行时

当您在 Visual Studio 2010 中将某个变量声明为动态时,其默认配置中根本不会有 IntelliSense。有趣的是,如果您安装一个类似 ReSharper 5.0 (jetbrains.com/resharper) 的附加工具,就可以通过 IntelliSense 获得一些有关动态对象的不完全信息。图 1 显示了带有和不带 ReSharper 的代码编辑器。该工具仅仅列出该动态类型上看起来已经定义的成员。在最低限度下,动态对象是 System.Object 的实例。

C# 4.0、动态关键字与 COM

图 1 在带有和不带 ReSharper 的情况下,Visual Studio 2010 中的动态对象的 IntelliSense

让我们看看当编译器遇到以下代码时会发生什么情况(这段代码设计得极其简单,目的是简化对实现细节的理解):

class Program 
{ 
 static void Main(string[] args) 
 { 
  dynamic x = 1; 
  Console.WriteLine(x); 
 } 
}

在第二行中,编译器不会尝试解析符号 WriteLine,也不会像传统的静态类型检查器一样发出警报或错误。只要遇到 dynamic 关键字,C# 的表现就会变得像是解释性语言。结果,编译器会生成一些临时代码,用来解释涉及动态变量或参数的表达式。解释器基于动态语言运行时 (DLR),是 .NET Framework 机制中的一个全新组件。若要使用更具体的术语,编译器必须使用 DLR 所支持的抽象语法来生成表达式树,并将其传递给 DLR 库进行处理。在 DLR 中,由编译器提供的表达式被封装在动态更新的站点对象中。站点对象负责实时将方法绑定到对象。图 2 显示了真实代码的充分简化版本,该真实代码是由前述的简单程序生成的。

上一页  1 2 3 4 5 6 7  下一页

Tags:动态 关键字 COM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接