看面试题的时候遇到这样一道题目,简要说明.NET的编译过程,在网上看了很多资料,简单总结如下:

1、一般的编译过程

通常高级语言的程序编译过程是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行。

2、.NET程序的编译与之类似:首先编写好的源代码,然后编译为微软中间语言代码,运行的时候即时编译为本地机器语言,同时.NET代码运行时有一个CLR(运行时)环境来管理程序;

 总结:

一般的高级程序语言会直接将代码编译成知为机器语言(二进制语言),之后由本地机执行这些机器语言从而实现编译过程;

而.NET的编译机制会在中间多一个环节,就是先将高级语言(如C#、VB)编译成中间语言(IL),然后再将中间语言(IL)通过CLR(公共语言运行时)转换为机器语言,之后由本地机执行这些机器语言从而实现编译过程;

最终的二进制代码(机器语言)被存储在一个缓冲区中。所以一旦程序使用了相同的代码,那么将会调用缓冲区中的版本。这样的话,如果一个.Net程序第二次被运行,那么就不需要进行第二次编译,速度明显加快。

最新文章

  1. SpringBoot-Learning
  2. Java学习笔记五——流程控制
  3. 将公网IP自动发到Twitter上
  4. hihoCoder-1036 (AC自动机模板题)
  5. 一步步学敏捷开发:5. Scrum的4种会议
  6. POJ 1837 Balance
  7. Winform中如何实现父窗体传递数据到子窗体并刷新子窗体
  8. C盘空间不足
  9. PHP+MYSQL 出现乱码的解决方法
  10. PowerDesigner实用技巧小结(4)
  11. kafka 消息服务
  12. 在Windows Server 2008 R2下搭建jsp环境(三)-Tomcat的下载安装
  13. oracle 删除重复记录
  14. CentOS7 查看显卡信息
  15. cronolog日志切割catalina.out
  16. springbank 开发日志 Spring启动过程中对自定义标签的处理
  17. Android6.0中PowerManagerService分析
  18. HDU 2176 基础NIM 输出方案
  19. Boosted Tree
  20. 记录一次teamview无法远程连接对方teamview的过程

热门文章

  1. npm publish bug & solution
  2. GitHub Secrets All In One
  3. CSS 弹性盒子模型
  4. React Hooks: useCallback All In One
  5. Vue 3 In Action
  6. how to create one single-file Web Component just using the HTML, CSS, JavaScript
  7. disable html input & pointer-events
  8. ⑧SpringCloud 实战:引入 Actuator监控+整合监控页面
  9. Java NIO wakeup实现原理
  10. java荷兰国旗问题