手里边有一本C#高组编程,一直说要看下去,可总是因为这因为那没有杂看,现在开稿学习

第一章

.net体系结构

我们不能孤立的使用C#语言,而必须和.net framework 一起考虑。C#编译器专门用于.net,这表示用C#编写的所有代码总是在.net framework中运行。对于C#语言来说,可以得出两个重要的结论:

(1)C#的结构和方法论反映了.net基础方法论。

(2)在许多情况下,C#的特定语言功能取决于.net的功能,或依赖于.net基类.

由于这种依赖性,在开始使用C#编程前,了解.net的结构和方法论就非常重要了,这就是本章的目的。下面是本章的内容:

1本章首先了解在.net编译和运行所有的代码(包括C#)时通常会出现什么情况。

2对这些内容进行概述之后,就要详细阐述microsoft中间语言(microsoft intermediate language,MSIL或简称为IL),NET上所有编译好的代码都要使用这种语言。本章特别要介绍IL、通用类型系统(common type system,CTS)能公共语言规范(common language specification ,CLS)如何提供.net语言之间的互操作性。最后解释各种语言如何使用NET,包括visual basic 和C++。

3之后,我们将介绍》NET的其他特性,包括程序集,命名空间和。NET的基类。

4最后本章章要探讨一下C#开发人员可以创建的应用程序类型

1。1C#与。NET的关系

C#是一种相当新的编程语言,C#的重要性体现在以下两个方面:

1它是专门为与microsoft的NET framework一起使用而设计的。(NET framework是一个功能非常丰富的平台,可开发,部署和执行分布式应用程序)

2它是一种基于现代面向对象设计方法的语言,在设计它时,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)。

2CLR把IL编译为闰台专用的代码。

这两个阶段的编译过程非常重要,因为Microsoft中间语言(托管代码)是提共。NET的许多优点的关键。

Micfosoft中间语言与JAVA字节代码共享一种理念:它们都是低级语言,语法很简单(使用数字代码,而不是文本代码),可以非常快速的转换为内部机器码。对于代码来说,这种精心设计的通用语法有很重要的优点:平台无关性,提高性能和语言的互操作性。

1.2.1  平台无关性

首先,这意味着包含字节代码指令的同一文件可以放在任一平台中,运行中编译过程的最后阶段可以很容易完成,这样代码就可以远行特定的平台上。换言之,编译为中间语言就可以获得。NET平台无关性,这与编译为JAVA字节代码就会得到JAVA平台无关性是一样的。

注意。NET的平台无关性目前只是一种可能,因为在编写本书时,。NET只能用于windows平台,但人们正在积极准备,使它可以用于其他平台(参见mono项目,它用于实现.net的开源代码

1.2.2提高性能

前面氢IL和JAVA做了比较,实际上,IL比JAVA字节代码的作用还要大,IL总是即编译的(称为JIT编译)而JAVA字节代码常常解释性的,JAVA的一个缺点是,在运行应用程序时把JAVA字节代码转换为内部可执行代码的过程会导致性能的损失(但是最近,JAVA在某些平台上能进行JIT编译。

JIT编译器并不是把整个应用程序一次编译完(这样会有很长的启动时间,而是只编译它调用的那部分代码(这是其名称由来)代码编译一次后,得到的内部可执行代码就存储起来,直到退出该 应用程序为止,这样在下次运行这部分代码时,就不需要重新编译了,micfosoft认为这个过程要比一开始就编译整个应用程序代码的效率高得多,因为任何应用程序的大部分代码实际上并不是在每次运行过程中都执行,使用JIT编译器,从来都不会编译这种代码。

这就解释了为什么托管IL代码的执行几乎和内部机器代码的执行速度一样快,但是并没有说明为什么microsoft认为这会提高性能,其原因是编译过程的最后一部分是在运行时进行的, JIT编译器确切的知道程序运行在什么类型的处理器上,可以利用该处理器提供的任何特性或特定的机器代码指令来优化最后的可执行代码。

posted on 2012-02-04 12:09  tnspop  阅读(2574)  评论(0编辑  收藏  举报