当再次调用 Z 类的方法 1 时,无需再进行编译 。
语言互操作性是 .NET Framework 的一项主要功能。因为 由 C# 编译器生成的 IL 代码符合公共类型规范 (CTS),因 此从 C# 生成的 IL 代码可以与从 Visual Basic、Visual C++、Visual J# 的 .NET 版本或者其他 20 多种符合 CTS 的语言中的任何一种生成的代码进行交互。单一程序集可 能包含用不同 .NET 语言编写的多个模块,并且类型可以 相互引用,就像它们是用同一种语言编写的。 .NET Framework 还包含一个由 4000 多个类组成的内容 详尽的库,这些类被组织为命名空间,为从文件输入和输 出、字符串操作、XML 分析到 Windows 窗体控件的所有 内容提供了各种有用的功能。
仅使用托管代码的 应用程序
使用托管代码和非托管代码的 应用程序
托管代码
托管代码
.NET Framework 类库 公共语言运行库
.NET Framework 类库 公共语言运行库
非托管代码
Windows
程序集包含描述它们自己的内部版本号和 它们包含的所有数据和对象类型的详细信 息的元数据。 程序集仅在需要时才被加载。 程序集可以包含一个或多个模块,每个模 块包含中间语言代码和元数据。
创建单文件程序集 创建多文件程序集 查看程序集的内容
命名空间 命名空间用来组织程序集中定义的对象或类。 程序集可以包含多个命名空间,命名空间 也可以包含其他命名空间。 在命名空间内可以定义: 接口,类,模块, 委托,枚举,结构等。
反射 反射提
供了描述程序集、模块、类型对象。 可以使用反射动态创建类型的实例对象,将 类型绑定到现有对象上,或从现有对象获 取类型并调用其方法或访问其字段和属性。
练习 比如你是个游戏公司(世嘉游戏公司),你开发 的游戏
软件里有很多游戏对象。比如有人,车等。 但游戏里的表示人的类是由另外一个下属公司A 开发的;表示车的类是由下属公司B开发的。你 开发的游戏在操作某个游戏对象时(即调用游戏 对象的Move()方法)需要调用公司A或公司B 开发的游戏对象的相应方法。请利用程序集引用 或反射的方法来实现。