文章目录
- 一、了解C#多语言编程原理
- 1. 通用语言运行库(CLR)
- 2. 通用类型系统(CTS)
- 3. 微软中间语言(MSIL)
- 4. 元数据和反射
- 5. 公共语言规范(CLS)
- 二、实例说明
一、了解C#多语言编程原理
C#中的多语言编程主要是依托于.NET框架的语言互操作性(language interoperability)实现的,这是由几个关键的.NET框架组件共同支持的:
1. 通用语言运行库(CLR)
CLR是.NET应用程序的执行环境,它提供了内存管理、异常处理、安全性和线程管理等服务。CLR允许用不同语言编写的代码在同一环境中运行,因为所有的.NET语言都遵循CLR的规则。
2. 通用类型系统(CTS)
CTS定义了所有.NET语言共享的类型系统。这意味着用一个.NET语言定义的类型可以被另一个.NET语言所使用。例如,C#中定义的一个公共类可以被VB.NET或F#使用,因为它们都遵循CTS规则。
3. 微软中间语言(MSIL)
.NET中的所有语言在编译时都不是直接编译成机器码,而是编译成一种称为MSIL(或简称IL)的中间语言。这种中间语言是独立于特定硬件和操作系统平台的。当.NET程序运行时,CLR的即时编译器(JIT)会将MSIL编译成针对运行它的特定平台的本地机器码。
4. 元数据和反射
.NET编译器在编译过程中会在生成的程序集中包含丰富的元数据,描述代码的结构,如类型定义和成员声明等。通过反射API,程序可以在运行时查询和访问这些元数据,从而实现不同语言编写的代码之间的互操作。
5. 公共语言规范(CLS)
CLS是一个指导开发者如何编写.NET语言之间可互操作代码的规范。它指出了一组规则,如果遵循这些规则编写.NET应用程序,那么这个程序就可以在所有遵循CLS的.NET语言之间互操作。
通过这些机制,C#程序可以轻松调用由其他.NET语言(如Visual Basic .NET, F#, 和其他.NET兼容语言)编写的组件,反之亦然。这种多语言互操作性大大增强了.NET框架的强大和灵活性。
简单来考虑就是,不同的语言比如C#和VB在运行或者在程序集成之前会被编译成同一种语言——微软中间语言,这样就互通了。
二、实例说明
在看这个例子前希望大家可以先看一下这篇文章中的例子:C#程序模块的封装
比如我们创建一个这样的窗体应用程序:
一个简单的加法运行,我们创建一个VB类库用VB语言写加法程序:
把加法程序命名空间取名为 Calculator:
然后在资源管理器中右击-生成,会有一个DLL文件,然后在第一个窗体运行应用程序中添加引用,把这个VB类库名添加进去;
接着我们用C#语言写第一张图中开始计算的程序:
记着在这段程序最上面假如引用:using VB类库名称
这样就可以运行一个同时用VB和C#语言编写的程序了。