目录
1.2.1 什么是 .NET Framework(.Net 框架)
1.C#是什么?
( 本小节将从C#的发展历程讲起,让你明白C#语言的特性。再阐述.Net Framework与C#的关系,让你对C#有一个全面的认识。)
C#(发音为C sharp)是微软公司开发的一种面向对象且运行于.Net Framework之上的高级程序设计语言。 (它的基本语法与C和C++类似,但相对而言,C#更加简单一点。)
1.1C#语言的发展历程
C#是微软公司在2000年6月发布的一种新的编程语言。在其发布后的14年,微软为了更好的使用C#编写应用程序不断更新C#语言的版本,每次更新都围绕某个主题带来新的特性。
1.1.1每个C#版本的主题
- C#1.0 围绕 托管代码
- C#2.0 围绕 泛型
- C#3.0 围绕 语言集成查询(LINQ)
- C#4.0 围绕 DLR
- C#5.0 围绕 异步编程
1.1.2每个C#版本更新的特性
(下图为C#每个版本所更新的特性,图取自Learning hard C#学习笔记)
1.2. Net Framework与C#的关系
C#是面向.NET Framwork的语言。.NET为C#提供了执行环境,C#可以调用(调用含义见注释).NET Framework所提供的类库来开发各种应用程序。
1.2.1 什么是 .NET Framework(.Net 框架)
.NET Framework就是应用程序运行时的执行环境。
我们可以这样简单的理解,C#是一门编程语言,它用于实现与计算机的对话, 而.NET Framework就相当于一本语言的语法书和单词书、短语书的集合。我们可以用C#编译和运行不同的代码实现不同的功能,但我们都需要遵循.Net框架。更通俗的讲,我们要跟一个外国人交流,我们都要用一种双方都能懂的一种或多种语言来通过不同的语句讲同一个意思,好比“您吃了吗”、“您刚刚吃了吗”、“您干饭了没”,虽然表达的方式不同,但我们都需要遵循一个语言的语法,总不能说“刚刚吃您了没”。
1.2.2 .NET Framework的组成
.NET Framework包括公共语言运行时(CLR,Common Language Runtime)和.NET Framework类库(FCL,Framework Class Library)
1.公共语言运行时(CLR,Common Language Runtime)——单词书和语法书的集合
CLR是.NET Framework的核心基础。可以看作是一个在执行时管理代码的代理,而且还负责对代码实施严格的类型安全检测,保证代码的正确性。这其中,我们将受到CLR称为托管代码(managed code),不受CLR管理的代码称为非托管代码(unmanaged code)。
1.1CLR的组成
它由两个部分组成:通用类型系统(CTS,Common Type System),公共语言规范(CLS,Common Language Specification)。
CTS——单词书
不止C#是面向.NET框架的唯一语言,VB.NET和F#也是面向.NET框架的语言。而CTS的作用:就是用于解决不同语言之间数据类型不同的问题,它可以使两个语言各自的数据类型转为共用类型,实现无缝转化。
CTS类型主要分为两大类:引用类型和值类型。这两种类型之间存在着相互转换,转换的方法分别为 装箱(box)和 拆箱(unbox)。
CLS——语法书
CLS是一种最低的语言标准,其他以.NET平台为目标的语言必须遵守这个标准,才能够与其他.NET语言互相调用。
2..NET Framework类库(FCL,Framework Class Library)——短语书
FCL是一组 DLL程序集(DLL注释见本文底部)的集合。
集合中大量定义好的类型,这些类型能帮助你快速实现一些功能。
之所以称之为集合,是因为FCL包含了极多的类型,为了避免类型繁多而带来的繁杂,因此有必要将FCL中的类型进行分类,将相关的一组类型单独放在一个单独的命名空间里来进行区分。
2.C#有什么用?
(本小节可选看,以下取自codecademy)
网站开发
C#在Web开发中很流行。在成为跨平台之前,它是使用ASP.NET平台为Windows Server开发Web应用程序的最流行的语言。使用 ASP.NET,您可以构建全栈的现代 Web 应用程序。
现在C#是跨平台的,可以在Windows,Mac OSX或Linux操作系统上运行,它已成为Linux上后端Web开发的流行语言。使用 C# 创建的 Web 服务快速、可靠,并且可以在任何云平台上运行。
视窗桌面应用开发
最初,C#只在Windows操作系统上运行,这是该语言的主要用途之一。但即使现在该语言是跨平台的,它仍然是Windows桌面开发的首选编程语言。您可能知道的一些用 C# 编写的 Windows 桌面应用程序包括 Microsoft Visual Studio、Paint.NET 和 KeyPass。
游戏开发
Unity 游戏引擎是最受欢迎的游戏引擎之一,尤其是对于新开发人员而言,因为它易于使用的游戏编辑器。要使用 Unity 构建游戏,您需要了解 C#。因此,如果你想进入领游戏开发域,学习 C# 是一个不错的选择。
Unity 还可用于 Samsung Gear 和 Oculus Rift 等平台上的虚拟现实开发。有超过 7.7 亿用户下载了 Unity,许多顶级游戏都是使用它创建的。
窗口组件和控件
如果您想为现有的 Microsoft 应用程序(如 Word、Excel 等)创建组件和控件,那么 C# 是学习的完美语言。
移动开发
尽管 Android 应用程序通常用Java或Kotlin编写,而 iPhone 应用程序通常用 Objective-C 或Swift 编写,但您可以使用 C# 使用 Xamarin 平台进行移动开发。借助 Xamarin,您可以使用一个代码库为 iOS、Android 和 Windows 创建高性能的现代应用。
企业发展
在微软商店中,你会发现很多C#代码,并且有很多微软商店创建了他们使用C#提供的几乎所有新应用程序或服务。因此,有时您可能会根据当前或未来雇主最常使用的语言来选择某种编程语言来学习。
3.C#代码执行过程
当我们想要在Visual Studio开发工具下运行C#代码时,.NET Framework平台会把C#代码转换为目标操作系统能理解的语言,既本机语言(native code)。
这过程分为两个阶段:
1.由C#编译器把C#代码编译为中间语言(CIL)代码
2.由即时编译器(JIT)把中间语言代码编译为特定CPU的本机代码(JIT编译生成本机代码时会把编译好的代码缓存到缓冲区,以便于下次直接调用,这一方法使系统只在首次调用时才会造成一些性能损失)
最后再执行本机代码。
结语
本章讲述了C#的特性和发展历程,通过阐述.NET框架的架构及其作用来说明.NET框架和C#之间的关系,还简略的谈了C#代码的执行过程。来使读者对C#有一个全面的认识。
注释:
- 程序集分为两种:扩展名为.exe的可执行代码、扩展名为.dll的可供其他程序调用的库文件。
- DLL程序集: 动态链接库(Dynamic Link Library, DLL) 是一个包含可由多个程序同时使用的代码和数据的库。
- 调用:调用是将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。举例:在代码中比较常见,若a程序需要很长一段代码,则可以建立另外一个文件b存放这段代码,当a需要时候直接调用b。