首先我们先来了解C#的发展历程,只有知道了C#的概貌和由 来,积累了必要的背景知识,才能更好的掌握C#。
C#是由微软公司开发的一种面向对象并且运行于.NetFramework 之上的高级程序设计语言。好多语法和C/C++类似,并且简单易学。
使用C#开发应用程序比使用其它语言更加简单,快速。因为C #是基于.NetFramework。.NetFramework为开发应用程序提供了丰富 的类库和图形控件,使用这些控件就可以开发出一些简单的应用程序。
1.1 C#发展历程:
C#语言发布于2000年,经历了这么多年,微软也在不断更新C#
的版本,每次升级都会带给我们眼前一亮,具体的升级特性我们会在
以后的课程里慢慢接触。
C#能编写哪些应用程序?
1:Windows桌面应用程序;
2:Web应用程序,也就是网站;
3:Web服务;
1.2 什么是.NetFramework
C#是一门编程语言,它用于实现于计算机的对话, 而.NetFramework就是应用程序运行时的执行环境,为应用程序提供 以下几种服务。
1:全面的类库
2:内存管理
3:通用类型系统:中间语言使用的预定义数据类型
4:开发结构和技术,如ASP.NET技术
5:语言互操作性:面向.NetFramework的语言编译器提供了生成中间语言代码的机制,这种机制使得不同语言之间相互操作成为了可能。
1.3 .NetFramework的组成
前面简单介绍了一些基础的概念,接下来我们看看究竟 NetFramework有哪些部分组成。
主要包括两个部分,公共语言运行时(Common Language Runtime,CLR)和.Net Framework类库(Framework Class Library,FCL)。
1:公共语言运行时
它是核心基础,我们可以将CLR看成一个在执行时管理代码的代 理,它提供了内存管理、线程管理和异常处理等服务,而且还负责对 代码实施严格的类型安全检查,保证了代码的正确性。我们将受CLR 管理的代码成为托管代码,不受CLR管理的代码称为非托管代码。
其中CLR包含两个部分:通用类型系统(CTS)和公共语言规范 (CLS)
比如C#和VB.NET都是由CLR进行管理的,但是它们的语法和数 据类型各不相同,CLR是如何对这两种不同的语言进行托管的呢? 这就得益于CTS。CTS用于解决不同语言之间数据类型不同的问题,如 C#中整形是int,而VB中是Integer,通过CTS可以将两者转换为Int32, 所有.NET语言都共享这一类型系统,从而使它们之间能够无缝操作。
.NET语言不仅仅存在数据类型的不同,语言规范上也有明显的 差距。CLS就是为了解决这个问题产生的。它制定了.NET平台为目标 的语言所必需支持的最小特征。遵循该标准的语言在.NET平台下都可 以相互调用。
2:.Net Framework类库
.Net Framework类库就是一组DLL程序集的集合,其中包含了大 量定义好的数据类型,这些类型都公开了一些功能。由于FCL中包含 了数量很多的类型,所以有必要将相关的一个类型放到一个单独的命 名空间中加以区分,如System.IO就包含了用于执行IO操作的类型, 因此,使用FCL中的某个类的时候,还必须知道该类所在的命名空间。
1.4 C#代码的执行过程
在VS下,我们只需要按F5就可以编译和执行C#代码了,下面我 们具体了解一下代码的执行过程。
(1)C#代码编译为中间语言代码阶段(IL)
(2)中间语言代码解释为本机代码阶段,为了使IL代码能够运行, 必需把它编译为本地代码,即CPU指令。这个过程由CLR的JIT编译器 来完成。
(3)执行本机代码,JIT编译生成本机代码之后,编译好的本机代码 会被放置到一个缓冲区,下次再调用相同的代码时,可以直接运行缓 冲区的现有的本机代码,从而避免重新验证IL代码以及把它编译为本 机代码的过程。使用这种方式,只有JIT发生的时候才有一定的性能损失。