C#高级编程(1)

 

公共语言运行库

.net framework的核心是其运行库的执行环境,称为公共语言运行库(CLR)或者.net运行库。在CLR的控制下运行的代码常常称为托管代码(managed code)。

编译分为两个阶段:

1.         把源代码编译为mircosoft中间语言(IL)。

2.         CLRIL编译为平台专用的代码。

托管代码的优点

1.         平台无关性。因为编译后为中间语言,可以用于其它平台,比如Mono项目。

2.         提高性能。ILjava字节代码的作用还要大。IL总是即时编译的(称为JIT编译),而java字节代码常常是解释性的。JIT编译器并不是把整个应用程序一次编译完,而是只编译它调用的那部分代码。代码编译过一次后,得到的内部可执行代码就存储起来,直到退出应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。

3.         语言的互操作性。就是可以将任何一种语言编译为中间代码,编译好的代码可以与从其它语言编译过的代码进行交互操作。(vb.netvisual C++.netvisual J#,脚本语言,comcom+

中间语言,C#代码在执行前要编译为中间语言(实际上,C#编译器公编译为托管代码)

主要有以下几个特征:

1.         面向对象和使用接口

2.         值类型和引用类型之间的巨大差别(对于值类型,变量直接保存其数据,而对于引用类型,变量仅保存地址,对应的数据可以在该地址中找到)

3.         强数据类型

4.         使用异常来处理错误

5.         使用特性(attribute)

垃圾收集

垃圾收集用来在.net中进行内存管理,特别是它可以恢复正在运行中的应用程序需要的内存。目前,windows平台已经使用了两种技术来释放进程向系统动态请求的内存

1.         完全以手工方式使应用程序代码完成这些工作

2.         让对象维护引用计数

.net运行库采用的方法是垃圾收集器,这是一个程序,其目的是清理内存,方法是所有动态请求的内存都分配到堆上,当.NET检测到给定进程的托管堆已满,需要清理时,就调用垃圾收集器。垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,确定哪些对象可以从代码中访问即哪些对象有引用。没有引用的对象就不能再从代码中访问,因而被删除。

反射:因为程序集存储了元数据,包括在程序集中定义的所有类型和这些类型的成员的细节,所以可以编程访问这些元数据。

 

posted on 2006-08-25 10:37  心悦  阅读(199)  评论(0编辑  收藏  举报