码迷,mamicode.com
首页 > Windows程序 > 详细

C#托管代码是什么?非托管代码是什么?

时间:2017-07-06 10:12:51      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:即时编译   平台   使用   lan   验证   本地   logs   程序集   com   

C#托管代码是什么?

 

托管代码(Managed Code)实际上就是中间语言(IL)代码。代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。
托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行库可以加载和验证程序集,并以此来保证中间语言的正确性。当某些方法被调用时,公共语言运行库把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用时使用。这个过程就是即时编译。 
注意:程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服务,例如内存管理、安全管理、线程管理等等。
总结:托管代码(Managed Code)是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。托管代码也可以调用CLR的运行库服务和功能,比如GC、类型检查、安全支持等等。这些服务和功能提供独立与开发语言的、统一的Managed Code应用程序行为。

原文转至:http://www.cnblogs.com/iamscree/articles/2363096.html

 

C#非托管代码是什么?

非托管代码(Unmanaged Code)是指直接编译成目标计算机的机器码,这些代码只能运行在编译出这些代码的计算机上,或者是其他相同处理器或者几乎一样处理器的计算机上。

 非托管代码不能享受公共语言运行库所提供的一些服务,例如内存管理、安全管理等。 如果非托管代码需要进行内存管理等服务,就必须显式地调用操作系统的接口,通常非托管代码调用Windows SDK所提供的API来实现内存管理。 非托管程序也可以通过调用COM接口来获取操作系统服务。 注意:C#跟Visual Studio平台的其他编程语言不一样的是,C#可以创建托管程序与非托管程序。当创建的项目选择名字以MFC,ATL或者Win32开头的项目类型,那么这个项目所产生的就是非托管程序。

 总结:非托管代码(Unmanaged Code)不由CLR公共语言运行库执行,而是由操作系统直接执行的代码。

原文转至:http://zhidao.baidu.com/link?url=bV1T7hfmsSFUUA1K5VyXN-dpgSW5-1j4tzV5uE9xMg4GLSNRQKs73Ky5UUqg5UX4uyfpkBs0PUeQw9bOFx_ng3aTXzaJYa1fFlATX2Yr9XK

C#托管代码是什么?非托管代码是什么?

标签:即时编译   平台   使用   lan   验证   本地   logs   程序集   com   

原文地址:http://www.cnblogs.com/makqiq/p/7124513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!