问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

.NET Frame work编译机制(二次编译)

发布网友 发布时间:2022-05-13 18:29

我来回答

1个回答

热心网友 时间:2022-04-27 14:05

C++和.Net程序采用了两种不同的编译方式。通常一个C++编写的程序,都是一次编译成二进制的代码,在相应的操作系统平台上直接执行即可。而.Net程序采用两次编译的方式,用C#,VB.Net等语言写成的程序被编译成IL代码,通过CLR在运行的时候JIT编译成为本地二进制代码。
MFC和WinForm很多设计上的不同从根本上说,都是因为编译模式带来的不同。因此,在仔细探讨MFC和WinForm之前,有必要细细体会一下不同编译方式带来的改变。
考虑一段代码,它需要在不同的编译环境下生成不同的代码,或者是为了减少代码编写量用一些替换方式取代类似的代码。在C++中利用预编译和宏来解决这些事情。MFC框架中,更是大量使用宏来进行核心功能的设计。但是宏只是一种巧妙的减少输入代码量的方式,本质上和手写输入一些代码并无区别(也许不够严密吧),它并不能在程序运行的时候动态支持代码的插入和改变,因为此时它已经编译完成了。而二次编译则不同,你可以将它的第一次编译看成是通常一次编译程序的预编译期,只是这个预编译更为的强大,它可以编译生成信息更为丰富的元数据。并且,只要在JIT执行前动态插入代码,利用反射等手段,就可以将已经编译好的程序的行为在某种程度上进行改变,其动态性能得到了本质上的改变。
因此,在MFC和WinForm中,我们可以看到两者在动态性能,安全性和效率方面都有很大的不同,总结一下,都可以归结到这不同的编译模式上来。在以后的日志中,都可以看到这些区别的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在线条形码生成 ie地址栏是什么 ie浏览器的官网地址是什么? 团餐定制电话 抖音电商与广东商务厅启动“富域计划” 简单的晚餐晒美食文案句子 简单的晚餐晒美食说说短句 鸭肉炒什么好吃家常做法 为什么越背越记不住 绯牡丹锦多久浇水 绯牡丹养护要点 .net framework2.0怎么编译让程序运行? .net的程序,如果在不用vs的情况下编译? .NET程序首先被编译成中间语言IL,IL经过再次编译后才生成机器码。这样做... .net 编译后.aspx页面上的服务器端代码(如:<%response.write("dd")%>)会发生变化吗? 如何使用.net命令行工具编译站点项目 高手们,请问联通宽带好还是机顶盒上网好? 所有的 .NET 应用程序都要经过几次编译?第一次编译的结果是什么? 简述asp.net 的编译过程 这种节奏视频用什么APP做的,求这个推荐或类似的app推荐? c# .net 怎么编译 在.NET中,程序编译过程 经常迟到怎么办 怎样查询一个司法鉴定中心是否正规 小米九手机桌面右上角突然出现黑色玫瑰花图案是咋回事? 全世界的人英文翻译 遍及全世界的英语怎么翻译? 全世界的人用英语怎么说? 全世界(用英语翻译出来) 全世界 英语翻译 3种 美容院的去斑产品怎样?朵肤去斑的可靠吗? .net已编译的程序,怎么能知道源码在哪个文件里? 小孩子被婆婆惯的不听话怎么办 非管控核酸检测报告啥时候出来? 乳磨牙的共同特点有哪些? 简述前磨牙类的共同特点? 婆婆连孩子都带不好,根本不用心? 公公婆婆带孩子还被嫌带不好,怎么办? 牙齿的拼音 婆婆带孩子,带的不好,我很苦恼。 婆婆不会带孩子怎么办 兔子会不会磨牙? 长牙的问题!!! 我带孩子婆婆觉得我带不好怎么办? 我想去上班,婆婆带孩子不放心,自己带孩子又不能上班,怎么办? 媳妇不满意婆婆带孩子,怎么办? 婆婆在家没事干也不过来帮我带宝宝,该怎么办? 关于甲壳动物的听力 龋病好发于牙齿的哪些部位? 一个手机可以同时登录2个吗?- 问一问 一部手机能不能同时登录两个