公共语言运行库(CLR),也叫.NET运行库
CLR处理在.NET Framework 内部运行的代码(称之为托管代码),并负责管理用于执行应用程序的进程和线程。
Microsoft中间语言(MSIL)
MSIL是一个它所支持的语言的扩展集,这样保证了语言的无关性,即.NET语言不能执行MSIL不能执行的操作。
关于MSIL语言:
1.面向对象设计(OOD)
2.类的单一实现继承
3.支持接口
4.以分离方式严格处理数据类型(值类型放在堆栈上,引用类型则存储在堆上)
5.强类型系统(处理转换数据类型)
通用类型系统(CTS)
CTS是一个所有.NET语言都支持的数据类型的集合,确保这些语言可以相互传送数据,体现了.NET语言的互操作性。
通用类型系统定义了如何在运行库中声明、使用和管理类型,同时也是运行库支持跨语言集成的一个重要组成部分。通用类型系统执行以下功能:
1.建立一个支持跨语言集成、类型安全和高性能代码执行的框架。
2.提供一个支持完整实现多种编程语言的面向对象的模型。
3.定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。
CLR内部的每一种数据都是一个对象,象.NET Framework中的所有其他对象一样,均由System.Object派生而来。
System.Object类有四种所有类型都可以使用的方法(常被重载)。
1.Equals() 允许对象之间进行比较
2.GethashCode() 为对象返回散列代码,即对象的唯一身份
3.GetType() 成为反射
4.ToString() 返回一个类型的字符串表示法
公共语言规范(CLS)
CLS是一组定义了一种语言的边界的标准,或者说是一种语言(与CLS兼容的)必须支持或遵循的一系列语言功能,从而使得其可以与其他的.NET语言互操作。
因此只要一种语言支持CLS,那么它只能支持MSIL和CTS语言功能的一个子集。如图
语言的互操作性
上面所述,只要代码是CTS许可的,就可以与其他语言的代码交互。这意味着以下的操作都可以完成:
1.一种类型可以由使用另一种语言编写的另一种类型派生而来
2.可以将一个对象传送到一个方法,该方法属于由另一种语言编写的另一个类型
3.一旦产生一个异常,可以将这个异常在使用一种不同语言编写的代码中传递
4.一个调试器可以在代码的不同方法之间调试,并且显示源代码,即使在多种语言之间进行调试也可以的