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

Vultr VPS韩国首尔机房速度和综合性能参数测试

Vultr 商家有新增韩国首尔机房,这个是继日本、新加坡之后的第三个亚洲机房。不过可以大概率知道肯定不是直连中国机房的,因为早期的日本机房有过直连后来取消的。今天准备体验看看VULTR VPS主机商的韩国首尔机房的云服务器的速度和性能。1、全球节点PING速度测试这里先通过PING测试工具看看全球几十个节点的PING速度。看到好像移动速度还不错。2、路由去程测试测试看看VULTR韩国首尔机房的节点...

LOCVPS新上韩国KVM,全场8折,2G内存套餐月付44元起_网络传真服务器

LOCVPS(全球云)发布了新上韩国机房KVM架构主机信息,提供流量和带宽方式,适用全场8折优惠码,优惠码最低2G内存套餐月付仅44元起。这是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。下面分别列出几款韩国机房KVM主机配置信息。韩国KVM流量型套餐:KR-Pl...

2021HawkHost老鹰主机黑色星期五虚拟主机低至3.5折 永久4.5折

老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...

托管代码为你推荐
机房360柴油发电机组启动电瓶充电小常识网络视频下载器网络视频下载工具哪个好用?excel大写金额EXCEL如何显示出汉字大写金额netbios协议NetBIOS协议起什么作用?sms是什么短信确认码是什么云家政网腾讯网的网址是多少?btest进入北大青鸟需要什么学历呢怎么保存整个网页怎样完整的保存一个网页ps5教程跪求PS5 教程ps5教程PS5安装教程? 更改hosts那一步具体怎么做?
广州服务器租用 php空间租用 万网免费域名 google电话 加勒比群岛 卡巴斯基免费试用版 空间首页登陆 512mb starry 永久免费空间 测速电信 重庆服务器 umax 第八届中美互联网论坛 fatcow 美国十大啦 weblogic部署 低价 screen wordpress安装 更多