Professional C# 学习笔记 , 一 .NET体系结构

.NET体系结构

一、.NET编译的两个阶段

1)、将源代码编译为IL(Intermediate Language)

2)、CRL将IL编译为平台专用的代码。

三个特性:平台无关系、提高性能、语言的户操作性。

二、托管代码和非托管代码

托管代码:在CRL控制下执行的代码,可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。

非托管代码:在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服。

托管资源:是由公共语言运行的垃圾回收器进行分配和释放的数据;

非托管资源:在应用程序中使用完这些非托管资源之后,必须显示的释放他们。例如System.IO.StreamReader的一个文件对象,必须显示的调用对象的Close()方法关闭它,否则会占用系统的内存和资源,而且可能会出现意想不到的错误。

常见的非托管资源:COM/COM++组件,ActiveX控件,API函数,指针运算,自制的资源文件等。

如何释放非托管资源?

方法:(通过析构函数)重写Finalize()方法; 实现IDisposable()接口。

详细介绍参考文章:http://topic.csdn.net/u/20091029/08/20B3B82A-83EC-4D4F-997C-CF693F691A0D.htmls

三、IL(中间语言)的主要特性

1)、面向对象和使用接口

2)、值类型和引用类型

3)、强数据类型

4)、异常处理

5)、特性(attribute)

相关知识点:

1、CTS 和CLS

2、垃圾收集器:所有动态请求的内存分配到.NET托管堆上,当.NET检测到给定进程的托管堆已满时,就调用垃圾收集器,

垃圾收集器处理目前代码中的所有变量,检查对存储在托管堆上的对象的引用,没有引用的对象就不能再从代码中访问,因为将被删除。

可以在代码中调用垃圾收集器,从而提高效率。

3、应用程序域:将多个应用程序放在同一个进程中,从而共享数据,减少因进程间的通讯而损耗的效率。基础:CRL通过强大的类型安全功能,检查每个正在运行的应用程序的代码,确保它们不偏离自己的数据区域。

四、什么是程序集(简介)

编译好的,面向.net代码的逻辑单元,是完全自我描述性的。

五、.NET Framework 基类库和命名空间。

基础知识参考文章(堆栈和堆(托管堆))

http://www.cnblogs.com/SealedLove/archive/2009/02/13/1390278.html