<From C++ To C#> 再来说说.NET Framework的跨语言性

我们已经知道,不同的.NET语言通过各自的编译器,可以编译出相同的中间文件。在运行时,CLR并不知道某个中间文件是由什么语言写出来的,它只需要遵循中间文件的规范,就可以运行该文件了。

能够通过这种方式实现跨语言性还有一个重要因素是所有语言支持的基本类型都是一致的。他们都是符合CTS规范的。

CTS规范属于CLR的范畴之内,它的全称是Common Type System。它规定了符合CTS规范的语言需要支持类型,接口,结构,每句和委托这5种类型,并且还包含这些类型可以有怎样的可见性(public, private, protected),多态的代码实现等等。其实我们发现CTS的这些规范要求和大多数面向对象的编程语言都是一致的,包括和我们学过的C++语言也有很大的相似程度。可以说它从总体上规定了语言的设计方式。

 

更进一步,如果我们需要多个文件合作运行的话,我们只要把多个中间文件串联在一起,而不用去担心不同的中间语言是由哪种编程语言实现的。

不同的语言虽然都符合CTS规范,但是还是各自有略微的差异。为了能达到不同语言的中间文件可以完全互通,CLR还规定了一套CLS规范。CLS规范其实就是所有语言的交集,因此,如果我们能把程序的类型定义等都定义在这个交集中,任何其他代码都能够识别。也就实现了不同语言的代码互相合作。

 

CLS和CTS以及其他语言规范之间的关系是这样的:1

最后我们用一张图来说明整个.NET Framework的结构。

2010012620512419

posted @ 2010-07-03 17:09  桔红糕  阅读(286)  评论(0编辑  收藏  举报