编译器和东西公开运行库的功用并使您可以编写得益于此托管施行情况 的代码。利用针对运行库的语言编译器开发的代码称为 托管代码;它得益于跨语言集成、跨语言异常处置、加强的平安性、版本控造和摆设撑持、简化的组件交互模子、调试和阐发办事等诸多功用。
(元数据相关)若要使运行库可以向托管代码供给办事,语言编译器必需发出对代码中的类型、成员和引用停止描述的元数据。
元数据与代码一路存储;每个可加载的公共语言运行库可移植可施行(PE)文件都包罗元数据。运行库利用元数据查找和加载类、在内存中对实例停止规划、解析办法挪用、生成本机代码、强迫平安性以及设置运行时上下文鸿沟。
(托管数据相关)运行库主动处置对象规划和办理对对象的引用,当不再利用对象时释放它们。
其保存期以那种体例来办理的对象称为托管数据。主动内存办理消弭了内存泄露以及其他一些常见的编程错误。若是代码是托管的,则能够在 。NET 框架应用法式中利用托管数据、非托管数据或者利用那两者。因为语言编译器供给它们本身的类型(如基元类型),因而可能其实不老是晓得(或需要晓得)数据能否是托管的。
(通用类型系统相关)公共语言运行库使设想 可以跨语言交互的组件和应用法式变得很容易。用差别语言编写的对象能够互相通信,而且它们的行为能够慎密集成。例如,能够定义一个类,然后利用差别的语言从原始类派生类或挪用原始类的办法。
还能够将类的实例传递到用差别的语言编写的类的办法 。那种跨语言集成之所以成为可能,是因为针对运行库的语言编译器和东西利用由运行库定义的通用类型系统,并且它们遵照运行库关于定义新类型以及创建、利用、连结和绑定到类型的规则。
(元数据相关)所有托管组件都照顾有关生成该托管组件的组件和资本的信息,做为其元数据的一部门。
运行库利用那些信息确保组件或应用法式具有它所需要的所有内容的法式集,那使代码不太可能因为某些未满足的依靠项而中断。注册信息和形态数据不再保留在注册表(在注册表中成立和维护它们会很困难)中;相反,有关您定义的类型(和它们的依靠项)的信息做为元数据与代码存储在一路,如许大大降低了组件复造和移除使命的冗杂性。
(关于差别的编程语言的扩展和撑持)语言编译器和东西已经对它们的开发人员以有用和曲不雅的体例公开运行库的功用。那意味着运行库的某些功用可能在一个情况中比在另一个情况中更惹人留意。您对运行库的体验取决于您利用的语言编译器或东西。
例如,若是您是一位 Visual Basic 开发人员,您可能会留意到有了公共语言运行库,Visual Basic语言的面向对象的功用比以前多了。您可能会对运行库的下列长处出格感兴致:
性能改良。
可以轻松利用用其他语言开发的组件。
类库供给的可扩展类型。
新的语言功用,如面向对象的编程的继承、接口和重载;允许创建多线程的可缩放应用法式的显式自在线程处置撑持;构造化异常处置和自定义属性撑持。
若是利用 Microsoft® Visual C 。
NET®,则能够利用C 托管扩展来编写 托管代码。C 托管扩展供给了托管施行情况以及对您所熟悉的强大功用和富于表示力的数据类型的拜候等长处。您可能会发现下列运行库功用出格有目共睹:
跨语言集成,出格是跨语言继承。
主动内存办理(垃圾收受接管),它办理对象保存期,使得引用计数不再是需要的。
自我描述的对象,它使得利用接口定义语言 (IDL) 不再是需要的。
编译一次即可在任何撑持运行库的 CPU 和操做系统上运行的才能。
还能够利用 C# 语言编写托管代码。C# 语言供给了下列长处:
完全面向对象的设想。
十分强的类型平安。
很好地交融了 Visual Basic 的简明性和 C 的强大功用。
主动内存办理(垃圾收受接管)。
类似于 C 和 C 的语法和关键字。
利用委托而不是函数指针,从而加强了类型平安和平安性。函数指针通过 unsafe C# 关键字和 C# 编译器 (csc。
exe) 的 /unsafe 选项可用于非托管代码和数据。