【Java精品源码栏目提醒】:网学会员--在 Java精品源码编辑为广大网友搜集整理了:C#本质论PDF - 产品手册绩等信息,祝愿广大网友取得需要的信息,参考学习。
h a n g e Vi h a n g e Vi XC e XC e F- w F- wPD PD er er W W O O N N y y bu bu to to 1 k k lic lic C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 第 章 .NET 体系结构 我们不能孤立地使用 C语言,而必须和.NET Framework 一起考虑。
C编译器专门用 于.NET,这表示用 C编写的所有代码总是在.NET Framework 中运行。
对于 C语言来说, 可以得出两个重要的结论: ● C的结构和方法论反映了.NET 基础方法论。
● 在许多情况下,C的特定语言功能取决于.NET 的功能,或依赖于.NET 基类。
由于这种依赖性,在开始使用 C编程前,了解.NET 的结构和方法论就非常重要了, 这就是本章的目的。
本章首先了解在.NET 编译和运行所有的代码包括 C时通常会出现什么情况。
对这 些内容进行概述之后,就要详细阐述 Microsoft 中间语言Microsoft Intermediate Language, MSIL 或简称为 IL,所有编译好的代码都要使用这种语言。
本章特别要介绍 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就其本身而言只是一种语言,尽管它是用于生成面 h a n g e Vi h a n g e Vi XC e XC e F- w F- wPD PD er er W W O O N N y y bu bu to to k k lic lic 第Ⅰ部分 C 语 言 C Cw w m m w ww w o o .d o .c .d o .c c u -tr a c k c u -tr a c k 向.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 字节代码共享一种理念:它们都是低级语言,语法很简单使 用数字代码,而不是文本代码,可以非常快速地转换为内部机器码。
对于代码来说,这种 精心设计的通用语法,有很重要的优点。
1. 平台无关性 首先,这意味着包含字节代码指令的同一文件可以放在任一平台中,运行时编译过程 的最后阶段可以很容易完成,这样代码就可以运行在特定的平台上。
换言之,编译为中间 语言就可以获得.NET 平台无关性,这与编译为
Java 字节代码就会得到
Java 平台无关性是 一样的。
注意.NET 的平台无关性目前只是一种可能,因为在编写本书时,.NET 只能用于 Windows 平台,但人们正在积极准备,使它可以用于其他平台参见 Mono 项目,它用于实 现.NET 的开放源代码,参见 http://www.go-mono.com/。
2. 提高性能 前面把 IL 和
Java 做了比较,实际上,IL 比
Java 字节代码的作用还要大。
IL 总是即时 编译的称为 JIT 编译,而
Java 字节代码常常是解释性的,
Java 的一个缺点是,在运行应 用程序时,把
Java 字节代码转换为内部可执行代码的过程会导致性能的损失但在最近,
Java 在某些平台上能进行 JIT 编译。
JIT 编译器并不是把整个应用程序一次编译完这样会有很长的启动时间, 而是只编译 它调用的那部分代码这是其名称由来。
代码编译过一次后,得到的内部可执行代码就存 储起来,直到退出该应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了。
4 h a n g e Vi h a n g e Vi XC e XC e F- w F- wPD PD er er W W O O N N y y bu bu to to k k lic lic 第1章 .NET 体系结构 C Cw w m .