聊一聊C#与.NET之间的关系
Posted 菜鸟厚非
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊一聊C#与.NET之间的关系相关的知识,希望对你有一定的参考价值。
C# 语言介绍
C#(读作“See Sharp”)是一种新式编程语言,不仅面向对象,还类型安全。 开发人员利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序。 C# 源于 C 语言系列,C、C++、Java 和 javascript 程序员很快就可以上手使用。
C# 是面向对象的、面向组件的编程语言。 C# 提供了语言构造来直接支持这些概念,让 C# 成为一种非常自然的语言,可用于创建和使用软件组件。 自诞生之日起,C# 就添加了支持新工作负载和新兴软件设计实践的功能。 C# 本质上是面向对象的语言。_* 你需要定义类型及其行为。
.NET 体系结构(与 C#)
C# 程序在 .NET 上运行,而 .NET 是名为公共语言运行时 (CLR) 的虚执行系统和一组类库。 CLR 是 Microsoft 对公共语言基础结构 (CLI) 国际标准的实现。 CLI 是创建执行和开发环境的基础,语言和库可以在其中无缝地协同工作。
用 C# 编写的源代码被编译成符合 CLI 规范的中间语言 (IL)。 IL 代码和资源(如位图和字符串)存储在扩展名通常为 .dll 的程序集中。 程序集包含一个介绍程序集的类型、版本和区域性的清单(metadata)。
执行 C# 程序时,程序集将加载到 CLR。 CLR 会直接执行实时 (JIT) 编译,将 IL 代码转换成本机指令。 CLR 可提供其他与自动垃圾回收、异常处理和资源管理相关的服务。 CLR 执行的代码有时称为“托管代码”(而不是“非托管代码”),被编译成面向特定平台的本机语言。
语言互操作性是 .NET 的一项重要功能。 C# 编译器生成的 IL 代码符合公共类型规范 (CTS)。 通过 C# 生成的 IL 代码可以与通过 .NET 版本的 F#、Visual Basic、C++ 或其他 20 多种与 CTS 兼容的任何语言所生成的代码进行交互。 一个程序集可能包含多个用不同 .NET 语言编写的模块,且类型可以相互引用,就像是用同一种语言编写的一样。
为什么需要二次编译
为了一次编译,不同平台使用,加一层中间层,更为灵活。
首先这要从系统层面出发,Windows 系统分为 32 与 64 位,而系统又分 Windows、Macos、Linux、Unix,未来也可能出现更多的系统。
这么多的系统如何和做到一次编译,在多平台运行呢?这就是二次编译,C# 源代码被编译成中间语言 (IL),存储在扩展名通常为 .dll 的程序集中, 程序集包含一个介绍程序集的类型、版本和区域性的清单(metadata)。
这样在不同的品台,同一份编译的中间语言,通过 CLR 转换为不同平台可执行机器指令,在不同平台执行。所以说,为了一次编译,不同平台使用,加一层中间层,更为灵活。
以上是关于聊一聊C#与.NET之间的关系的主要内容,如果未能解决你的问题,请参考以下文章