来说,一个对 IL 的定义,同样的对象可以不管是不是能捕获.NET 语言。您的组
件在 C#可以书面提出一个可以由 Fortran 采用资讯科技应用捕获的异常。而且关
于不同的调用约定或数据类型,不必再担心无缝互操作性。
跨语言继承的另一个特点是可以使用 IL。现在您可以创建源代码,而且无需
再为新类中的基本成分编写其他的语言。例如,您可以创建一个 C++的类,从
Visual Basic 中实现了一个派生类。.NET 可以实现这一点,因为它定义和类型系
统都提供了一个共同的.NET 语言。
对应用开发的规范下,Windows DNA 的巨大挑战之一是各种语言开发的应用
程序时的调试。由于统一的 Visual Studio.NET 开发环境和 IL 都使用了.NET 语言
作为输出,跨语言调试就不会排斥汇编语言。 .NET 公共语言运行库调试应用程序,
完全支持跨语言的界限。运行库还提供了内置的堆叠设施,使其更容易找到漏洞
和错误。
平台和处理器独立性
中间语言是与 CPU 无关的,它远高于大多数机器语言水平。.NET 应用程序可
以在任何平台上支持写、新建以及托管,这样就可以支持.NET 公共语言运行库。
由于.NET 通用类型系统定义不论基本数据类型大小都可以使用.NET 应用程序,
而且这些应用程序可以在公共语言的环境中运行,所以任何硬件或操作系统都支
持.NET 平台。
虽然在写这篇文章的时候,.NET 应用程序只能运行在 Windows 平台。但
2001 年 6 月 27 日,微软宣布,它已经与 Corel 达成协议,共同开发一个 C#编译
器和.NET 框架基础结构组件,它们将共享源代码并执行 FreeBSD 版本的 UNIX。
这个测试版本目前预计将在 2002 年上半年的某个时候发布。
几个星期后,也就是在二零零一年七月十日微软给出了积极的信号。一个深蓝
设计的.NET,这是一个为 Linux 用户界面设计的流行的 Gnome 计划的开源版本。
你可以在 www.go-mono.net 找到该项目,称为 MONO。该小组正在开发一个 C#语
言的编译器,以及.NET 公共语言运行库,而且关于基类库的工作也开始了。在 2001
年年底该项目的发布了它的第一个可用单代码计划。
自动内存管理
提到内存泄漏问题,可能一个开发环境中并没有提供自动内存来管理开发,从
而导致调试无数个小时。对那些想在这个工作中花费一些时间来降低棘手的代码
的人来说,绕过资源管理应该是一种不错的方法。
从 Visual Basic 开发人员或有 COM 背景与未来技术的相关的人员的角度来说,
这项技术在只有一个对象而且没有其他物体对其引用的时候会恢复内存,而且基
本上它不再需要使用内存。虽然这在理论上听起来完善,但在实践中却有几个问
题。最常见的是循环引用问题,即一个对象到另一个对象,它本身包含一个回到
第一个对象的引用。当内存管理的对象不使用它们看起来时候的摸样时,这些对
象将始终大于零。因此,除非它们是隐式解构,不然他们的内存可能永远不会被
发现。
C 或 C++程序员的习惯是自己销毁对象,因为他们能管理其自有的内存。他们
不信任任何人能利用管理资源并将之照顾好。然而,在.NET 环境下,微软正在努
力使软件开发更加容易。在本章后面的内容,我们涉及.NET 如何进行已经经过严
格的引用计数或手动内存管理方法改进的垃圾收集工作。
支持的版本
谁如果不理解 “DLL HELL”,那就是他尚未开发 Windows(或至少支持)软