您的位置:首页 > 其它

读.NET 框架程序设计(第一章)

2008-09-18 18:23 113 查看
任何高级语言多数情况下提供的都是CLR全部功能的一个子集。CLR允许在编程语言之间互相切换和高度集成。通过CLR ,我们可以用C#来编写应用程序的I/O部分(C#擅长),用APL来编写应用程序的工程计算部分(APL擅长)。

1 将源代码编译为托管代码

举例:C#代码--->C#编译器--->托管模块(IL和元数据)(其实以程序集的形式存在,程序集由托管模块和资源(或数据)文件组成)--->CLR执行(执行过程:举例如下)

Code

static void main()

{

Console.WriteLine("Hello");

Console.WriteLine("Goodbye");

}
检测main中代码引用的到所有类型,这里只有Console,CLR会为此分配一个单独的数据结构,此结构中,Console类型中定义的每一个方法都会有一个对应的条目,该该法对应的条目保存有方法实现代码的地址。该数据结构被初始化时,CLR将把每一个条目设置为CLR内部的一个没有正式记录的函数。

main函数第一次调用WriteLine时,JITComplier将调用该方法对应的函数,该函数负责将此方法的IL代码编译成本地CPU指令。这些CPU指令将被保存在一个动态分配的内存块中。然后JITComplier将前面数据结构中定义的方法的地址替换为包含本地CPU指令的内存块地址。

该CPU指令执行完毕,它将返回到main函数中,main函数将接着执行下面的代码。

main函数第二次执行WriteLine时,由于已经编译成本地CPU指令被保存在内存中,所以将直接跳过JITComplier的验证和编译过程,直接调用。

2. .NET框架类库

通用类型系统:

CLR所有的内容都是围绕类型(其实就是类)展开的。所以通用类型系统就是用来描述类型的定义和行为。以下为概述:

类型可以由以下几种成员组成:字段,方法,属性,事件。

通用语言规范:

所有语言特征的交集,目的就是实现不同语言之间的无缝访问。C#中使用: [assembly:CLSCompliant(true)]

CLR中,类型的每个成员或者是一个字段,或者是一个方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: