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

转载于:https://www.cnblogs.com/makqiq/p/7124513.html

C#托管代码是什么?非托管代码是什么?相关推荐

  1. C#托管代码与C++非托管代码互相调用二(C++调用C#代码)

    上篇文章提到,目前项目想做到核心部分代码不被反编译,而考虑到团队成员都是比较熟悉C#,因此核心算法部分采用C++,而其他地方则采用C#(例如数据访问层,界面层都使用C#语言).在上一篇文章中完成了C# ...

  2. C#托管代码与C++非托管代码互相调用一(C#调用C++代码.net 代码安全)

    在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能 ...

  3. C#托管代码调用C++非托管代码

    1.C#调用非托管代码的方式: 2.DllImport方法调用 1)导入规则:i.方法名与Win API完全一样,设置EntryPoint属性,可以在c#中显示不同的方法名称:ii.函数除了需要Dll ...

  4. VC++ 非托管代码 托管代码

    为什么80%的码农都做不了架构师?>>>    #pragma managed #pragma unmanaged 看了好多好多非托管代码和托管代码之间相互调用,感觉都没有说在重点上 ...

  5. C#基础知识之托管代码和非托管代码

    什么是托管代码(managed code) 托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行.编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方 ...

  6. C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用

    1      DLLImport的使用 using System; using System.Runtime.InteropServices; //命名空间 class Example { //用Dl ...

  7. 托管代码C#调用非托管C++ API, 封送嵌套结构体数组

    一.前言: 最近这两天由于项目需要,提供给客户的C++ 动态库需要返回自定义结构体数组,网上也查了很多资料, 推荐一本书, <精通.NET互操作:P/Invoke.C++ Interop和COM ...

  8. 从游戏脚本语言说起,剖析Mono所搭建的脚本基础

    0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:"为何游戏脚本在现在的游戏开发中变得不可或缺?".那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又 ...

  9. WCF分布式开发步步为赢(15):错误契约(FaultContract)与异常处理(ExceptionHandle)

    今天学习WCF分布式开发步步为赢系列的15节:错误契约(FaultContract)与异常处理(ExceptionHandle).本节内容作为WCF分布式开发的一个重要知识点,无论在学习还是项目中都应 ...

  10. 用C#开发.NET CF 蓝牙通信模块

    www.itdocx.com 在Windows Mobile软件开发中.Net正扮演着日益重要的角色,我们已经可以看到很多用.Net CF开发的软件,这些软件涉及到了日常应用的方方面面.在智能设备的软 ...

最新文章

  1. NAS存储对称和非对称结构之前的区别概述
  2. Python Beautiful Soup类的基本元素
  3. java输出机票问题_java编程,机票例题纠正改错,谢谢
  4. Sympy常见多个变量【一行代码创建】
  5. git/ TortoiseGit 在bitbucket.org 使用证书登陆
  6. API数据安全知多少【知识篇】
  7. Dubbo(六)之属性配置
  8. linux 定时执行kettle6,linux下使用crond定时执行kettle的job
  9. windows.open()参数列表
  10. JavaScript基础知识(三个判断、三个循环)
  11. Zmail-简单易用的python邮件模块
  12. 0011-绝对值函数
  13. robocode_Robocode大师的秘密,预测性定位
  14. ic和mos怎么区分_快速掌握MOS管源极和漏极的区别!看了受益匪浅!
  15. Mac 查看本机端口占用
  16. Linux rm -rf 之rm: cannot remove `linux': Device or resource busy
  17. 下血本买的!1-3年的Android开发工程师看过来,挥泪整理面经
  18. 超声的pacs系统和dicom服务器,PACS系统中DICOM/HL7网关与DICOM服务器的研究与实现
  19. Oracle和MySql的布尔类型
  20. 汽车企业数字化转型成熟度评估模型研究

热门文章

  1. 网站中人性化提示信息的JavaScript实现
  2. HTML DOM Element 对象
  3. GridView中实现单选RadioButton
  4. /proc/meminfo 学习
  5. shell编程中crontab用法超级详解!
  6. static的三种用法,定义静态变量,静态函数,静态代码块!
  7. springmvc十八:RestfulCRUD增删改查小实战
  8. mybaits二十五:mybatis整合ehcache
  9. HTTP权威指南记录 ---- Web服务器
  10. 记录使用Performance API遇到的问题