您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中间语言 >

在c 高级编程中讲到编译为中间语言就可以获得net 平台无关性。我

发布时间:2019-07-03 22:01 来源:未知 编辑:admin

  在c# 高级编程中,讲到编译为中间语言就可以获得平台无关性。我困惑的是(见补充问题)

  在c# 高级编程中,讲到编译为中间语言就可以获得.net 平台无关性。我困惑的是(见补充问题)

  编译成中间语言后,还需要CLR把这个中间语言编译成为.net平台专用的代码,这个CLR(。net运行库)难道不是.net特有的执行环境吗?难道这个中间语言可以跑在任何平台上吗?其他平台怎么...

  编译成中间语言后,还需要 CLR 把这个 中间语言 编译成为.net 平台专用的代码,这个CLR (。net 运行库)难道不是.net 特有的执行环境吗?难道这个中间语言可以跑在任何平台上吗?其他平台怎么认识这个中间语言啊? 为什么编译为中间语言就与.net 平台无关呢?这不自相矛盾吗?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  首先实也是一种规范,基于COM+的规范,就像风靡一时的COM思想!不扯了

  You are right!凡事无绝对,平台无关性也是相对某种意义上的。。。

  首先你编写c#程序,编译成MSIL中间语言程序之后,运行经由CLR管理(所谓“托管”),不论目前的CPU是什么型号,哪个厂家生产的,不论目前的操作系统是哪个公司生产的都可以运行!

  这样你就会问了,你不能在MAC或者linux上面运行,只能在windows上运行,而且还需要装net framewok,那这还叫什么平台无关性!

  所以这里的平台无关性是指,你只需要编写一次代码,不用考虑目标平台的因素,之后只要目标平台装有“CLR”,就可以运行。如果希望能够在MAC或者linux上面运行,那么必须有人按照微软.net的规范去开发对应的CLR,比如linux的开源项目Mono!

  CLR在托管运行该程序的时候,会针对目标平台和系统进行一些优化和“翻译”,形成一个二进制输出流给CPU去执行~

  所以跟Java虚拟机的思想类似(java因为有linux版本和windows版本等,所以在对应系统上同样的程序可以运行),这些平台无关性指的是 “Once written, run anywhere!这个意义上的。。。

  你可以去看看 .Net SDK中的一些头文件等,可以多少了解一些CLR,其实就是用COM+的思想,使用低级语言(c++)编写的一些核心的DLL,比如mscoree.dll等.

  展开全部CLR确实是有的,只是.net平台上叫CLR而已。java上也有JRE,功能和CLR很类似。只不过java平台没有那么多语言罢了。

  .net的多语言机制是建立在CLS上的,即公共语言规范。这是一个限定规范,它将现行的.net所支持的语言都是符合这个规范的。不然怎么会和中间语言相关呢。

  .net平台上的中间语言叫做MSIL(微软中间语言),这种语言类似汇编语言的语法,如果你是程序员,你是绝对不会想去看这样的代码的。一个赋值的操作能写7,8行。而MSIL是.net平台特有的,在net平台上执行的代码都是MSIL。

  所有支持.net平台的语言最终都会编译成为MSIL,然后再有.net平台执行这些代码。而编译的过程就是由CLR执行的。这也是编译型语言和解释性语言的区别之一!!

http://catlooking.com/zhongjianyuyan/160.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有