编译器、运行时和 .NET Framework

你知道计算机是如何将代码转换为可运行程序的吗?那么你需要了解编译器,CLR,IL,.NET Framework。

编译器

编译器是将用一种编程语言编写的源代码转换为另一种编程语言的程序。“我为什么需要这个?” 你会问,“我以为我们是用 C# 编写的?” 您编写的 C# 代码必须转换为计算机处理器可以理解的内容。当然,处理器是计算机的大脑——执行所有计算的部分。处理器不知道 C#;它只理解机器代码。

IL

您刚刚完成了 C# 代码的编写。当您运行 C# 编译器时,它会将您的代码作为输入,进行一些处理,然后以中间语言 (IL) 代码输出您的程序,该代码保存在 *.exe 或 *.dll 文件中。
在这里插入图片描述

这并不是发生在幕后的代码排列的结束。IL 代码生成后,我们仍然没有任何东西可供我们的处理器读取(记住,处理器只能理解机器码)。因此,某人或某物需要将 IL 代码转换为机器代码。那个东西的名字是公共语言运行时,或CLR。

CLR,JIT 编译器

CLR 是在您的计算机上运行的程序,用于管理 IL 代码的执行。简单来说,它知道如何处理 IL 以及如何执行用 IL 代码编写的程序。它使用即时或 JIT 编译器将 IL 代码转换为机器代码(有时称为“本机”代码)。JIT 编译器之所以如此命名是因为它在用户尝试使用它的那一刻编译 IL 代码;例如,当您双击 .exe 文件时。
在这里插入图片描述
CLR 和 JIT 编译器都知道计算机由什么硬件组成,并将 IL 编译成计算机熟悉的本机代码。

看一下您的代码从编写到运行的流程

在这里插入图片描述
JIT 编译器将 IL 代码从您的 exe 文件编译为由处理器立即执行的本机代码。

编译器错误和运行时错误

您的代码可能不会总是完美运行。程序中可能发生两种类型的错误:编译器错误和运行时错误。

C# 编译器会发现编译器错误并阻止您的代码被编译为 .exe。编译器错误的一些常见示例是缺少分号或拼写错误的命令。C# 编译器报告这些错误并停止处理输出,因为不知道如何处理错误。编译器会将这些错误写入您的 IDE 的输出窗口,而输出是您了解问题所在和需要修复的关键。您应该始终阅读编译器错误!

如果在程序运行时遇到问题,则会出现运行时错误。这些通常是运行时停止的严重错误,因为继续可能会影响其他文件或操作系统。可能的运行时错误包括程序试图除以零或写入只读文件。运行时错误比编译器错误更危险,这就是为什么开发人员会在代码成为可执行程序之前尝试确保编译器在编译阶段捕获尽可能多的错误。

.NET Framework

为了运行 C# 程序,您需要一个基本类库、一个 CLR 以及您的代码可能使用的任何其他库。不要担心单独找到它们 - 这些都是称为.NET Framework的包的一部分。第一个专为 Windows 设计的 beta 版本于 2000 年发布。如果您想在 Linux 或 Mac OS 上编写 C# 代码,您可以使用其他框架,例如 Mono 或 .NET Core。

安装 .NET Framework 后,您可以运行使用多种编程语言编写的程序:

C#
F#
Visual Basic .NET
Windows PowerShell
其他

总结不易,如果对您有帮助,请一键三连,鼓励兔子发表更优秀的文章!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值