托管代码.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类库里面有什么自己动手去找找资料、敲的手酸、 祝你好运、、

WHloud Date鲸云数据($9.00/月), 韩国,日本,香港

WHloud Date(鲸云数据),原做大数据和软件开发的团队,现在转变成云计算服务,面对海内外用户提供中国大陆,韩国,日本,香港等多个地方节点服务。24*7小时的在线支持,较为全面的虚拟化构架以及全方面的技术支持!官方网站:https://www.whloud.com/WHloud Date 韩国BGP云主机少量补货随时可以开通,随时可以用,两小时内提交退款,可在工作日期间全额原路返回!支持pa...

云雀云(larkyun)低至368元/月,广州移动1Gbps带宽VDS(带100G防御),常州联通1Gbps带宽VDS

云雀云(larkyun)当前主要运作国内线路的机器,最大提供1Gbps服务器,有云服务器(VDS)、也有独立服务器,对接国内、国外的效果都是相当靠谱的。此外,还有台湾hinet线路的动态云服务器和静态云服务器。当前,larkyun对广州移动二期正在搞优惠促销!官方网站:https://larkyun.top付款方式:支付宝、微信、USDT广移二期开售8折折扣码:56NZVE0YZN (试用于常州联...

CloudCone($82/月)15-100M不限流量,洛杉矶CN2 GIA线路服务器

之前分享过很多次CloudCone的信息,主要是VPS主机,其实商家也提供独立服务器租用,同样在洛杉矶MC机房,分为两种线路:普通优化线路及CN2 GIA,今天来分享下商家的CN2 GIA线路独立服务器产品,提供15-100Mbps带宽,不限制流量,可购买额外的DDoS高防IP,最低每月82美元起,支持使用PayPal或者支付宝等付款方式。下面分享几款洛杉矶CN2 GIA线路独立服务器配置信息。配...

托管代码为你推荐
时间刻度机械手表的时分针时间刻度都对不准吗?instagram电脑版苹果macbook pro做摄影拍照后期有什么优势吗?为什么很多摄影师用它?和thinkpad W系列比呢?pat是什么格式photoshop填充图案是pat格式,需用什么软件打开?请高人指点,谢谢~音乐代码css控制背景音乐代码erp系统教程如何使用ERP系统操作?彩信平台请问彩信平台升级怎么改参数能告诉我具体步骤吗?particular教程particular的用法particular教程怎样做ae粒子云效果btest进入北大青鸟需要什么学历呢flv转avi求FLV转换为AVI的软件
虚拟主机mysql 深圳虚拟主机 新网域名解析 已备案域名出售 raksmart namecheap 英文简历模板word 天猫双十一抢红包 申请空间 最好的空间 灵动鬼影 什么是刀片服务器 南通服务器 vip域名 英雄联盟台服官网 论坛主机 永久免费空间 阿里云邮箱申请 服务器托管价格 石家庄服务器 更多