《C#高级编程(中文第六版)》.pdf
文本预览下载声明
C#高级编程(第6 版)
1
第1 章 .NET 体系结构
我们不能孤立地使用C#语言,而必须和.NET Framework 一起考虑。C#编译器专门用于.NET,这
表示用C#编写的所有代码总是在.NET Framework 中运行。对于C#语言来说,可以得出两个重要的结
论:
(1) C#的结构和方法论反映了.NET 基础方法论。
(2) 在许多情况下,C# 的特定语言功能取决于.NET 的功能,或依赖于.NET 基类。
由于这种依赖性,在开始使用C#编程前,了解.NET 的结构和方法论就非常重要了,这就是本章
的目的。下面是本章的内容:
● 本章首先了解在.NET 编译和运行所有的代码(包括C#)时通常会出现什么情况。
● 对这些内容进行概述之后,就要详细阐述Microsoft 中间语言(Microsoft
Intermediate Language,MSIL 或简称为IL),.NET 上所有编译好的代码都要使用这种语言。本章特别
要介绍IL、通用类型系统(Common Type System ,CTS)及公共语言规范(Common Language Specification,
CLS)如何提供.NET 语言之间的互操作性。最后解释各种语言如何使用.NET,包括Visual Basic 和C++ 。
● 之后,我们将介绍.NET 的其他特性,包括程序集、命名空间和.NET 基类。
● 最后本章简要探讨一下C#开发人员可以创建的应用程序类型。
1.1 C#与.NET 的关系
C#是一种相当新的编程语言,C#的重要性体现在以下两个方面:
● 它是专门为与Microsoft 的.NET Framework 一起使用而设计的。(.NET Framework 是一个功能
非常丰富的平台,可开发、部署和执行分布式应用程序) 。
● 它是一种基于现代面向对象设计方法的语言,在设计它时,Microsoft 还吸取了其他类似语言
的经验,这些语言是近20 年来面向对象规则得到广泛应用后才开发出来的。
有一个很重要的问题要弄明白:C#就其本身而言只是一种语言,尽管它是用于生成面向.NET 环
境的代码,但它本身不是.NET 的一部分。.NET 支持的一些特性,C#并不支持。而C#语言支持的另
一些特性,.NET 却不支持(例如运算符重载) !
但是,因为 C#语言是和.NET 一起使用的,所以如果要使用 C#高效地开发应用程序,理解
Framework 就非常重要,所以本章将介绍.NET 的内涵。
1.2 公共语言运行库
.NET Framework 的核心是其运行库的执行环境,称为公共语言运行库(CLR)或.NET 运行库。通
常将在CLR 的控制下运行的代码称为托管代码(managed code) 。
但是,在CLR 执行编写好的源代码之前,需要编译它们(在C# 中或其他语言中) 。在.NET 中,编
译分为两个阶段:
(1) 把源代码编译为Microsoft 中间语言(IL) 。
(2) CLR 把IL 编译为平台专用的代码。
这个两阶段的编译过程非常重要,因为Microsoft 中间语言(托管代码)是提供.NET 的许多优点的
关键。
Microsoft 中间语言与Java 字节代码共享一种理念:它们都是低级语言,语法很简单(使用数字代
码,而不是文本代码) ,可以非常快速地转换为内部机器码。对于代码来说,这种精心设计的通用语
法有很重要的优点:平台无关性、提高性能和语言的互操作性。
2
1.2.1 平台无关性
首先,这意味着包含字节代码指令的同一文件可以放在任一平台中,运行时编译过程的最后阶段
可以很容易完成,这样代码就可以运行在特定的平台上。换言之,编译为中间语言就可以获得.NET
平台无关性,这与编译为Java 字节代码就会得到Java 平台无关性是一样的。
注意.NET 的平台无关性目前只是一种可能,因为在编写本书时,.NET 只能用于Windows 平台,
但人们正在积极准备,使它可以用于
显示全部