一、托管代码与非托管代码
托管代码:microsoft 的中间语言(IL),主要作用在.NET Framework的公共语言运行库(CLR)执行代码前去编译源代码,也就是说托管代码充当着翻译的作用
两个阶段:源代码便以为托管代码 托管代码便以为microsoft的平台专用语言。
编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。中间语言被封装在一个叫程序集(Assembly)的文件中。
非托管代码:Visual Studio .NET2002 发布之前所创建的代码,可以直接编译成目标计算机的机械码,不能享受一些运行库所停工的服务,例如 安全和内存管理等。如果非托管代码需要进行内存管理等服务,就必须显式调用操作系统的接口。非托管程序回通过COM接口来或去操作系统服务。
区别:
1、托管代码是一种中间语言,运行在CLR(公共运行库)上;
非托管代码被编译为机器码,运行在机器上。
2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容
非托管代码以来于平台和语言
3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作
非托管代码需要自己提供安全检测、垃圾回收等操作