




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 16第部分 C# 语 言PAGE 17PART第1章 C#的起源PART11CHAPTERCHAPTERC#的起源C#的起源C#是微软软.NEET开发发人员的的首选语语言,它它具有的的新功能能经受住住了时间间的考验验,且始始终位于于科技前前沿,为为现代企企业计算算环境提提供了一一种可用用性强的的高效编编程方法法。无论论从哪个个角度看看,C#都是221世纪纪最重要要的编程程语言之之一。的顾发历包C建动设念它何他机影本解C.Trer相正将的#和和.NEET FFrammewoork协协同工作作,一起起构建了了一个高高度优雅雅的编程程环境。1.1 C#的的族谱计算机语言言并不是是凭空存存在
2、的,相相反,它它们彼此此相关,新新语言都都或多或或少地受受到它之之前的语语言的影影响。类类似于异异花授粉粉的过程程,一种种语言的的功能会会被另一一种语言言沿用,但但新的创创新内容容会被集集成到现现有的环环境中,而而陈旧的的构造则则会被消消除。就就这样,编编程语言言不断地地进化,编编程艺术术也不断断地完善善。C#也不例例外。了程计的它继当成两算言 C和CC+语语言的功功能,并并且与JJavaa有紧密密联系。理理解它们们之间的的关系对对于理解解C#语语言是很很重要的的,因此此,我们们将分析析这三种种语言的的发展环环境,以以此来开开始C#语言的的研究。1.1.11 CC语言:现代程程序设计计的开端端
3、创志代设代始是nsih于世0在使N操统EP-机建尽些的最的aa言经了的然C首立向编规至适C语言成长长于200世纪660年代代的“结结构化程程序设计计”变革革。在结结构化程程序设计计兴起之之前,大大型程序序很难编编写,因因为程序序逻辑容容易混乱乱会呈现现所谓的的“无头头绪的代代码”,比比如掺杂杂大量纷纷乱而难难以跟踪踪的跳转转、调用用和返回回。而结结构化语语言通过过增加定定义明确确的控制制语句、带带有局部部变量的的子程序序以及其其他方法法改进了了这个局局面。通通过使用用结构化化的技术术,程序序变得更更加组织织良好和和可靠,并并且更易易于管理理。也其构言C首功强能雅和达一其易语上序而序)的理很得多
4、员护些天也不但C确程带一奋的空自C成08代最的化设言然而,C语语言也有有其局限限性,其其中最为为麻烦的的一种局局限性是是其不能能够处理理大型程程序。一一旦项目目达到了了一定的的规模,使使用C语语言就会会遇到障障碍,并并且C程程序变得得难以理理解和维维护。严严格来讲讲,局限限性具体体取决于于程序、程程序员和和他们所所使用的的工具,但但是只要要超出这这种局限限,C程程序就会会变得难难以管理理。1.1.22 OOOP和和C+语言的的创建到20世纪纪70年年代后期期,许多多项目的的规模接接近或达达到了结结构化程程序设计计方法和和C语言言所能承承受的极极限。为为解决这这个问题题,新的的编程方方法开始始出
5、现,该该方法称称为面向向对象程程序设计计(obbjecct-oorieenteed pgmnO)过O程能理型序当流语即言支向程计发对本语愿终了+的生。由aetur于7在西Mr lBl室的初称新为 tCss13名+C包语全因C是+础tur对言的部展为持对序事C是言向版通建C构C语Sotp序供种向中法移O中法样程在面象编前要一功而去一新言言08代部间慢应并了的到09代C语渐主并围及了世0末+经应广程计目C语是高的级的语C+语言言的出现现并不是是试图要要创建一一种新的的程序设设计语言言,而是是对一种种已经很很成功的的语言的的增强,理理解这一一点很重重要。总总之,语语言的发发展是从从一种已已有的语语言
6、开始始,然后后不断改改进直至至满足需需求,这这是亘古古不变的的道理。1.1.33 IInteerneet和JJavaa的出现现程序设计语语言的下下一个主主要进步步是Jaava语语言,它它最初被被称为OOak,是是由Suun MMicrrosyysteems公公司在119911年开始始使用的的。Jaava的的主要设设计人员员是Jaamess Goosliing,PPatrrickk Naaughhtonn、Chhriss Waarthh、Edd Frrankk和Miike Sheeriddan等等人也参参与了这这项工作作。Java是是一种结结构化的的面向对对象语言言,它继继承了CC+的的语法和和
7、设计理理念。与与其说JJavaa语言创创新方面面的动力力来自于于程序设设计艺术术的进步步(尽管管从某种种程度上上是),不不如说来来自于计计算机硬硬件环境境的变化化更确切切。在IInteerneet成为为主流之之前,大大多数程程序都是是针对特特定的CCPU和和操作系系统而编编写、编编译和执执行的。事事实确实实如此,但但当人们们能够很很容易地地把程序序从一种种环境移移植到另另一种环环境,并并且可移移植性相相对于其其他紧迫迫问题已已经退居居其次时时,程序序设计人人员都乐乐于对代代码进行行重用。然然而,随随着Innterrnett的兴起起,多种种不同类类型的CCPU和和操作系系统连接接在一起起,可移移
8、植性的的问题再再次出现现,而且且更加严严重。为为解决可可移植的的问题,需需要一种种新的语语言,这这种语言言就是JJavaa。尽管Javva最重重要的功功能是能能够创建建跨平台台、可移移植的代代码(这这是Jaava很很快获得得认可的的原因),但值值得注意意的是,创创建Jaava语语言的原原动力并并不是IInteerneet而是是急需一一种平台台无关的的语言,以以便为嵌嵌入式控控制器开开发软件件。当试试图给IInteerneet创建建代码时时,再次次遇到了了在嵌入入式开发发中遇见见的问题题 跨平台台、可移移植性。实实际上,IInteerneet是一一个巨大大的分布布式计算算空间,其其中存在在着多种
9、种不同类类型的计计算机。能能解决小小规模环环境中移移植性问问题的技技术同样样可以应应用于IInteerneet中的的大规模模环境。通程的码成种字的代从得可然由v拟J)行节所a程够何a虚的中另由a虚相易因对多境可Java使使用字节节码,这这和C、CC+语语言的机机制完全全不同,CC和C+程序序通常要要编译为为可执行行的机器器码。机机器码是是和特定定的CPPU和操操作系统统相关联联的。因因此,如如果要在在不同系系统上执执行C/C+程序,就就必须将将它们重重新编译译为该环环境下的的特定机机器码。所所以,要要创建一一个可以以在多种种环境中中运行的的C/CC+程程序,就就需要程程序有多多种不同同的可执执
10、行版本本,这不不仅不切切实际,代代价也十十分昂贵贵。Jaava采采用中间间语言不不失为一一种优雅雅而高效效的解决决方案。这这也正是是C#所所采用的的方案。如前所述,JJavaa源自CC和C+语言言,其语语法基于于C语言言,而面面向对象象模型则则基于CC+语语言。尽尽管Jaava 代码既既不向上上也不向向下兼容容C/CC+,但但它们的的语法及及其相似似,从而而使得大大量C/C+程序员员能够很很容易地地转向JJavaa。此外外,因为为Javva基于于并改进进了现有有的范例例,所以以Gosslinng等人人得以集集中精力力完成那那些新添添加的、富富于创新新的功能能。正如如Strrousstruup开
11、发发C+语言时时不需要要从头开开始一样样,Goosliing在在开发JJavaa语言时时也不需需要创建建一门新新语言。而而且,随随着Jaava的的创建,CC和C+已成成为创建建新计算算机语言言的公认认的底层层基础。1.1.44 CC#的创创建当Javaa成功解解决了IInteerneet环境境下的可可移植性性问题时时,另一一些缺乏乏的功能能随即暴暴露出来来。首先先是多语语言互操操作性,也也称为混混合语言言程序设设计,这这指的是是用一种种语言编编写的代代码和用用另一种种语言编编写的代代码协同同工作的的能力。多多语言互互操作性性是创建建大型分分布式软软件系统统所需要要的功能能,也是是创建软软件组件
12、件所期望望的功能能,因为为最有价价值的组组件往往往能够被被尽可能能多的计计算机语语言采用用,并能能最广泛泛地应用用于不同同的操作作环境中中。Java另另一个缺缺乏的功功能是没没有与WWinddowss平台完完全集成成。尽管管Javva程序序能够在在Winndowws环境境中运行行(假定定已经安安装了JJavaa虚拟机机),但但Javva和WWinddowss不是完完全兼容容的。由由于Wiindoows是是当今应应用最广广泛的操操作系统统,因此此缺乏对对Winndowws的直直接支持持是Jaava的的一大缺缺陷。为满足种种种需要,微微软公司司开发了了C#语语言,它它是微软软在200世纪990年代
13、代后期开开发的,也也是整个个.NEET战略略的一部部分。220000年中期期发布了了C#的的第一个个版本,其其首席设设计师是是Andderss Heejlssberrg。HHejllsbeerg是是当今世世界上处处于领导导地位的的计算机机语言专专家之一一,他取取得了许许多出色色的成就就,例如如,200世纪880年代代,极其其成功且且极具影影响力的的Turrbo Passcall软件因因其语法法的精简简实现而而成为了了以后所所有编译译器的标标准,该该软件的的最初创创建者就就是Heejlssberrg。C#与C、CC+和和Javva直接接相关。这这不是偶偶然的,因因为这三三种语言言是世界界上使用用
14、最广泛泛、最受受的设言且创#时乎的程都C+Ja过#在易的基C供种的些移方因Heejlssberrg既不不需要也也没必要要从头开开始,而而只需将将精力集集中于特特定的改改进和创创新。C#的族谱谱如图11-1所所示,CC#的“祖祖父”是是C,从从C那里里继承了了语法、许许多关键键字和运运算符。接接下来,CC#基于于并改进进了C+所定定义的对对象模型型。如果果您了解解C或者者C+语言,那那么对CC#语言言将不会会感到陌陌生。图1-1 C#的族谱谱C#和Jaava之之间的关关系稍显显复杂。如如前面所所说,JJavaa也是从从C和CC+衍衍生而来来,也继继承了CC/C+的语语法和对对象模型型。类似似于J
15、aava,CC#被设设计用来来产生可可移植的的代码。但但是C#不是衍衍生于JJavaa,C#和Jaava更更像堂兄兄弟,有有共同的的祖先,但但在许多多重要方方面也有有所不同同。尽管管如此,如如果您对对Javva有一一定了解解,那么么对C#的许多多概念也也将很熟熟悉。反反过来,如如果您将将来需要要学习JJavaa语言,那那么从CC#中学学到的知知识也将将继续有有用。C#包含许许多新增增加的功功能,本本书的后后面章节节中将详详细讨论论这些功功能,其其中最重重要的功功能体现现在其对对软件组组件的内内置支持持。事实实上,CC#已经经被特征征化为面面向组件件的语言言,因为为它包含含对面向向软件组组件编程
16、程的完整整支持。例例如,CC#包含含了支持持组件创创建的功功能,如如属性、方方法和事事件。然然而,CC#程序序能够在在安全的的混合语语言环境境中运行行,这一一点才是是它最重重要的面面向组件件的功能能。1.1.55 CC#的发发展最初的1.0版本本发布后后,C#一直在在快速发发展。CC# 11.0发发布之后后不久,微微软就发发布了11.1版版本。该该版本包包含一些些细小的的调整,但但是没有有对该语语言添加加任何新新功能。然然而,随随着2.0版本本的发布布,情况况发生了了很大的的变化。.发C展中水件为本了新如部型ai p)名并根扩语范功覆C2版该真成算言的语并明软该长展诺C#的下一一个主要要发布版
17、版本是33.0,这这便是本本书将要要介绍的的C#版版本。因因为C# 2.0增加加了许多多新的功功能,人人们期望望C#的的开发进进程缓慢慢一些,从从而可以以让程序序员有时时间熟悉悉这些功功能,但但是实际际情况并并非如此此。随着着C# 3.00的发布布,微软软再一次次将C#推到了了语言设设计的峰峰尖浪口口,C# 3.0添加加了一组组创新的的功能,这这些功能能重新定定义了编编程的发发展前景景。下面面列出了了C# 3.00版本对对该语言言添加的的功能:匿名类型自动实现的的特性扩展方法隐式类型的的变量拉姆达(LLambbda)表达式式语言集成查查询(LLangguagge IInteegraatedd
18、Quueryy,LIINQ)对象和集合合初始化化程序部分方法所有这些功功能都非非常重要要并且对对该语言言有着深深远的影影响,但但是其中中最令人人兴奋的的两个功功能是语语言集成成查询(LINNQ)和和拉姆达达表达式式。LIINQ允允许开发发人员使使用C#编程元元素编写写数据库库样式的的查询。然然而,LLINQQ语法并并不是只只限于用用于数据据库,也也可以用用于数组组和集合合。因此此,LIINQ提提供了一一种新的的方法来来处理一一些常见见的编程程任务。通通常在LLINQQ表达式式中使用用拉姆达达表达式式,但是是也可以以在其他他地方使使用这种种表达式式。拉姆姆达表达达式实现现使用拉拉姆达运运算符=的
19、函函数样式式语法。LLINQQ和拉姆姆达表达达式的结结合为CC#编程程提供了了全新的的操作方方式。在在本书的的学习过过程中,您您将了解解这些功功能如何何彻底改改变编写写C#代代码的方方式。1.2 C#如如何与.NETT Frrameeworrk相关关尽管C#语语言是一一门可以以独立学学习的计计算机语语言,但但它和其其运行时时环境(.NEET FFrammewoork)有着特特殊关系系。原因因有两方方面,首首先微软软最初设设计C#语言是是为了给给.NEET FFrammewoork创创建代码码。其次次,C#使用的的类库是是由.NNET Fraamewworkk定义的的。因此此,尽管管可以将将C#
20、语语言和.NETT环境分分离开来来,但两两者也是是紧密相相关的。正正因为如如此,所所以应该该对.NNET Fraamewworkk以及它它对C#语言的的重要性性有一个个大致的的了解,这这一点很很重要。什么是.NNET Fraamewworkk.NET Fraamewworkk定义了了一个支支持高度度分布的的、基于于组件的的应用程程序开发发和执行行环境。它它使得不计语够工从Wds提安可的用程和相是N awk了非要体一公言库(Coommoon LLangguagge RRunttimee,CLLR),它它是管理理程序执执行的系系统。公公共语言言运行库库有诸多多功能,作作为.NNET Fraamew
21、workk的一部部分,它它被用来来确保程程序的可可移植性性、支持持混合语语言编程程,并提提供安全全的执行行。第二个实体体是.NNET类类库,该该库让应应用程序序能够访访问运行行时环境境。例如如,如果果想要执执行I/O操作作,例如如,在屏屏幕上显显示一些些内容,就就需要使使用.NNET类类库来实实现。对对于程序序设计新新手来说说,术语语“类”或或许比较较陌生,我我们将在在本书后后面的章章节中详详细介绍绍,现在在先给出出一个关关于类的的简单定定义:类种对结用助程只序.T定特它在支N运系地行于自用E库此程以到何.NETT环境下下运行。1.3 公共语语言运行行库的工工作原理理运(R要.T的其原:#进译
22、编并出行而出包殊伪(微间即I的ML的组于特P指实ML了可的语注尽S在上于v的码两有的当程序运行行时,由由CLRR将中间间代码转转换成可可执行代代码。因因此,任任何编译译成MSSIL的的程序都都可以在在装有CCLR的的环境上上执行。这这是.NNET Fraamewworkk具有可可移植性性的部分分原因。微软中间语语言是通通过JIIT编译译器转换换成可执执行代码码的。JJIT的的英文全全称是“JJustt-Inn-Tiime(实时)”。该该处理过过程如下下:当.NETT程序执执行时,CCLR激激活JIIT编译译器,JJIT编编译器根根据程序序中各部部分的需需要将MMSILL转换成成本机代代码。因因此,尽尽管最初初C#程程序被编编译成MMSILL,但实实际仍是是作为本本机代码码执行的的。也就就是说,它它的运行行速度与与不转换换时编译译执行的的速度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农场卖粮合同范例
- 农村煤碳出售合同范例
- 北京拆除合同范例
- 原木买卖合同范本
- 原纸订购合同范例
- 厨房餐具采购合同范例
- 产品采购定制合同范例
- 内外墙漆装修合同范例
- 住房拆迁施工合同范例
- 个人委托代理购房合同范例
- 公文发文流程图
- 2024年03月中国工商银行总行本部2024年招考暑期实习生笔试历年参考题库附带答案详解
- 盈建科课程设计
- 光肩星天牛防治技术规程 DB23-T 2625-2020 黑龙江
- DB43-T 3111-2024分布式光伏接入配电网技术导则改
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传画册
- 2024年云南省中考物理真题含解析
- 《员工质量意识培训》课件
- 再生医学服务行业现状分析及未来三至五年行业发展报告
- 【语文】《我与地坛》课件+2024-2025学年统编版高中语文必修上册
- 【初中道法】认识生命说课课件-2024-2025学年统编版道德与法治七年级上册
评论
0/150
提交评论