公共语言运行库工作方式公共语言运行库的功能通过编译器和工具公开,可以编写利用此托管执行环境的代码
使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等
若要使公共语言运行库能够向托管代码提供服务,语言编译器必须生成一些元数据来描述代码中的类型、成员和引用
元数据与代码一起存储;每个可加载的公共语言运行库可移植执行 (PE) 文件都包含元数据
公共语言运行库使用元数据来完成以下任务:查找和加载类,在内存中安排实例,解析方法调用,生成本机代码,强制安全性,以及设置运行时上下文边界
公共语言运行库自动处理对象布局并管理对象引用,当不再使用对象时释放它们
按这种方式实现生存期管理的对象称为托管数据
垃圾回收消除了内存泄漏以及其他一些常见的编程错误
如果您编写的代码是托管代码,则可以在 .NET Framework 应用程序中使用托管数据、非托管数据或者同时使用这两种数据
由于语言编译器会提供自己的类型(如基元类型),因此您可能并不总是知道(或需要知道)这些数据是否是托管的
有了公共语言运行库,就可以很容易地设计出对象能够跨语言交互的组件和应用程序
也就是说,用不同语言编写的对象可以互相通信,并且它们的行为可以紧密集成
例如,可以定义一个类,然后使用不同的语言从原始类派生出另一个类或调用原始类的方法
还可以将一个类的实例传递到用不同的语言编写的另一个类的方法
这种跨语言集成之所以成为可能,是因为基于公共语言运行库的语言编译器和工具使用由公共语言运行库定义的通用类型系统,而且它们遵循公共语言运行库关于定义新类型以及创建、使用、保持和绑定到类型的规则
所有托管组件都带有生成它们所基于的组件和资源的信息,这些信息构成了元数据的一部分
公共语言运行库使用这些信息确保组件或应用程序具有它需要的所有内容的指定版本,这样就使代码不太可能由于某些未满足的依赖项而发生中断
注册信息和状态数据不再保存在注册表中(因为在注册表中建立和维护这些信息很困难)
取而代之的是,有关您定义的类型(及其依赖项)的信息作为元数据与代码存储在一起,这样大大降低了组件复制和移除任务的复杂性
语言编译器和工具公开公共语言运行库的功能的方式对于开发人员来说不仅很有用,而且很直观
这意味着,公共语言运行库的某些功能可能在一个环境中比在另一个环境中更突出
您对公共语言运行库的体验取决于所使用的语言编译器或工具
例如,如果您是一位 Visual Basic 开发人员,您可能会注意到:有了公共语言运行库,Visual Basic 语言的面向对象的功能比以前多了
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。