vb.net托管和非托管 net 托管

托管代码和非托管代码有什么区别广义的说 , 托管代码就是集成在你所使用的开发平台内的编程语言 。例如:目前最常见的 .Net 运行库里集成了VC++, C#, VB, F#...等20多种语言的构件和处理功能 。
托管代码:
”托管“的含义就是,这些语言的后台(隐性的)操作都由这个管理系统(.Net)完成了,你把你的编程委托给了开发平台(库)来完成 。当你使用这些语言时,一些系统资源的调用、回收、编译……各种工作都由它来完成,你只需要专注于程序功能的实现即可 。
非托管代码:
就是指不在你这个集成开发环境里,而是使用其它的开发平台写出的程序(代码) 。比如说java语言(不是jscript) , basic语言(不是VB),C语言(不是VC/C++/C#)等等……它们也有自己的开发平台和程序 , 用这些语言写出的程序就属于”非托管“ 。
当非托管的代码在你的托管平台上运行时,你的托管平台就不能很好地处理一些后台(隐性的)操作,就需要编写额外的代码来使它们变得和谐并且安全 。
举个最简单的例子:
C和汇编语言,它们是最早期进入计算机领域的高级语言(汇编已经不能算高级语言了:)),它们可以直接对CPU、内存、总线、I/O、硬盘等硬件进行操作(读/写) , 像DOS、Windows、iOs这些操作系统都是用它们写的 。
所以你在.Net集成环境中直接使用这些语言时,会遇到很大的阻碍,阻碍来源于所谓的”托管平台“,它认为这些操作是不安全的,就会拒绝编译和执行 。
但这些语言的特点是操作直接、速度奇快(跟托管平台比),而且专用性和针对性极强,当我们需要运行具有上述特点的程序时,C和汇编可以说是最理想的语言了 。要想让它们和托管平台”和平共处“的话 , 就需要编制额外的代码让它们符合这个托管平台的安全和管理规范,还需要有非常高深的编程功底 。要不然等待我们的就会有两种结果:一是程序无法运行、二是直接造成软件或硬件的损坏(底层操作是可以损伤硬件的) 。
我解释清楚了吗?
托管代码与非托管代码的区别1简单的说,就是代码被编译成MSIL后在.net的Framework下运行 , 同操作系统底层的交互都交给framework去做 。所谓非托管代码就是脱离了Framework的管制,直接同底层API打交道,自己管理自己的内存和安全机制等东西 。而托管代码就不管这些 , 全都由Framework去完成
2“程序”一般都是在对操作系统进行直接或者间接的操作
“托管程序”是需要通过访问公共语言运行时(cls)才能访问操作系统的程序
而“非托管程序”不用通过访问公共语言运行时(cls)可以直接访问操作系统的程序
3vb.net,C#等写的程序是托管程序,VC++可以写托管程序,如果用到了内存管理,则只能编译为非托管程序这些东西MSDN上都写得很清楚的,如果真想深入了解的话LZ可以看看CLR via C#、.net框架设计、Effective C#之类的书籍
问一个关于vb制作软件的问题,高手看看~~~如果是VB6.0的话
一般来说是可以直接运行的
因为它不需要安装.net
framework(框架).
所以你所说的因该是VB.net
所有基于.net框架开发出来的程序都使用了托管代码(除VC++非托管代码程序外)也就是说
是基于.net框架的开发出来的程序
不是真正理解上的win32程序
也就是你所谓的不是真正exe文件
它是一种中间代码程序
.net把它叫做托管程序.它需要在安装有.net
framework的机器上才能运行.这就是你问的怎么回事中的其中重要的一点.

推荐阅读