托管代码.NET下什么是托管代码

托管代码  时间:2021-06-26  阅读:()

什么是"托管代码"?

托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。

所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。

运行库编译器(runtime-aware ompiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。

在托管执行环境中使用托管代码及其编译,可以避免许多典型的导致安全黑洞和不稳定程序的编程错误。

同样,许多不可靠的设计也自动的被增强了安全性,例如 类型安全检查,内存管理和释放无效对象。

程序员可以花更多的精力关注程序的应用逻辑设计并可以减少代码的编写量。

这就意味着更短的开发时间和更健壮的程序。

c# 托管是什么意思

托管代码就是基于元数据格式的代码,运行于平台之上,所有的与操作系统的交换有来完成,就像是把这些功能委托给,所以称之为托管代码。

非托管代码则反之。

举个例子l 还可以使用mfc,atl来编写程序,他们基于MFC或者ATL,而不是.NET,所有是非托管代码,如果基于比如C#,则是托管代码 非托管代码是指.NET解释不了的 简单的说,托管代码的话,可以自动释放资料,非托管代码需要手动释放资料. 什么是托管C++ 托管是.NET的一个专门概念,它倡导一种新的编程理念,因此我们完全可以把“托管”视为“.NET”。

由托管概念所引发的C++应用程序包括托管代码、托管数据和托管类三个组成部分。

托管代码 .Net环境提供了许多核心的运行(RUNTIME)服务,比如异常处理和安全策略。

为了能使用这些服务,必须要给运行环境提供一些信息代码(元数据),这种代码就是托管代码。

所有的C#、VB.NET、JScript.NET默认时都是托管的,但Visual C++默认时不是托管的,必须在编译器中使用命令行选项(/CLR)才能产生托管代码。

托管数据 与托管代码密切相关的是托管数据。

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

默认情况下,C#、Visual Basic 和 JScript.NET 数据是托管数据。

不过,通过使用特殊的关键字,C# 数据可以被标记为非托管数据。

Visual C++数据在默认情况下是非托管数据,即使在使用 /CLR 开关时也不是托管的。

托管类 尽管Visual C++数据在默认情况下是非托管数据,但是在使用C++的托管扩展时,可以使用“__gc”关键字将类标记为托管类。

就像该名称所显示的那样,它表示类实例的内存由垃圾回收器管理。

另外,一个托管类也完全可以成为 .NET 框架的成员,由此可以带来的好处是,它可以与其他语言编写的类正确地进行相互操作,如托管的C++类可以从Visual Basic类继承等。

但同时也有一些限制,如托管类只能从一个基类继承等。

托管代码和非托管代码有什么区别

广义的说,托管代码就是集成在你所使用的开发平台内的编程语言。

例如:目前最常见的 .Net 运行库里集成了VC++, C#, VB, F#...等20多种语言的构件和处理功能。

托管代码: ”托管“的含义就是,这些语言的后台(隐性的)操作都由这个管理系统(.Net)完成了,你把你的编程委托给了开发平台(库)来完成。

当你使用这些语言时,一些系统资源的调用、回收、编译……各种工作都由它来完成,你只需要专注于程序功能的实现即可。

非托管代码: 就是指不在你这个集成开发环境里,而是使用其它的开发平台写出的程序(代码)。

比如说java语言(不是jscript),basic语言(不是VB),C语言(不是VC/C++/C#)等等……它们也有自己的开发平台和程序,用这些语言写出的程序就属于”非托管“。

当非托管的代码在你的托管平台上运行时,你的托管平台就不能很好地处理一些后台(隐性的)操作,就需要编写额外的代码来使它们变得和谐并且安全。

举个最简单的例子: C和汇编语言,它们是最早期进入计算机领域的高级语言(汇编已经不能算高级语言了:)),它们可以直接对CPU、内存、总线、I/O、硬盘等硬件进行操作(读/写),像DOS、Windows、iOs这些操作系统都是用它们写的。

所以你在.Net集成环境中直接使用这些语言时,会遇到很大的阻碍,阻碍来源于所谓的”托管平台“,它认为这些操作是不安全的,就会拒绝编译和执行。

但这些语言的特点是操作直接、速度奇快(跟托管平台比),而且专用性和针对性极强,当我们需要运行具有上述特点的程序时,C和汇编可以说是最理想的语言了。

要想让它们和托管平台”和平共处“的话,就需要编制额外的代码让它们符合这个托管平台的安全和管理规范,还需要有非常高深的编程功底。

要不然等待我们的就会有两种结果:一是程序无法运行、二是直接造成软件或硬件的损坏(底层操作是可以损伤硬件的)。

我解释清楚了吗?

.NET下什么是托管代码

首先你要明白什么是.NET Framework、简单点来说是一个框架、而C#应用程序或ASP.NET应用程序都是运行在这个框架之上的、个人理解为相当于java的jdk、其中.NET Framework下包括两个主要的组件:公共语言运行库和.NET Framework类库、而公共语言运行库运行库是.NET Framework的基础、可以把它看作一个在执行时管理代码的代理、既然是代理、可能会提供一些服务、其中核心的服务有内存管理、线程管理和远程处理==、这个时候以运行库为目标的代码成为托管代码、反之则为非托管代码、当然由C#语言开放的、属于托管代码、至于.NET Framework类库里面有什么自己动手去找找资料、敲的手酸、 祝你好运、、

wordpress通用企业主题 wordpress高级企业自适应主题

wordpress高级企业自适应主题,通用型企业展示平台 + 流行宽屏设计,自适应PC+移动端屏幕设备,完美企业站功能体验+高效的自定义设置平台。一套完美自适应多终端移动屏幕设备的WordPress高级企业自适应主题, 主题设置模块包括:基本设置、首页设置、社会化网络设置、底部设置、SEO设置; 可以自定义设置网站通用功能模块、相关栏目、在线客服及更多网站功能。点击进入:wordpress高级企业...

vpsdime7美元/月,美国达拉斯Windows VPS,2核4G/50GB SSD/2TB流量/Hyper-V虚拟化

vpsdime怎么样?vpsdime是2013年成立的国外VPS主机商,以大内存闻名业界,主营基于OpenVZ和KVM虚拟化的Linux套餐,大内存、10Gbps大带宽、大硬盘,有美国西雅图、达拉斯、新泽西、英国、荷兰机房可选。在上个月搞了一款达拉斯Linux系统VPS促销,详情查看:vpsdime夏日促销活动,美国达拉斯vps,2G内存/2核/20gSSD/1T流量,$20/年,此次推出一款Wi...

亚洲云-浙江高防BGP.提供自助防火墙高防各种offer高防BGP!

 亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括B...

托管代码为你推荐
ata考试什么是ATA银行考试啊短信营销方案有谁实验过短息营销,这个方法好吗?大家可以试试啊!oledbdatareaderDataReader和IDataReader的区别?webservice框架WebService新手,请教WebService需要什么包java程序员招聘java程序员学出来工作好不好找,工资咋样?云办公平台Gleasy云办公平台解决了哪些问题?网站客服代码如何将在线客服代码插入到您的网页中?医院排队系统医院排队机和医院排队机的区别有哪些?za是哪个国家的奥洛菲是哪个国家的防火墙技术应用防火墙的应用与研究论文
www二级域名 出租服务器 韩国vps bluehost godaddy支付宝 好看的桌面背景图 轻量 国外免费空间 论坛空间 可外链网盘 idc查询 美国盐湖城 zcloud windows2008 forwarder 海外加速 winserver2008r2 globalsign 优惠服务器 asp简介 更多