C是微軟NET開發(fā)人員的首選語言_第1頁
C是微軟NET開發(fā)人員的首選語言_第2頁
C是微軟NET開發(fā)人員的首選語言_第3頁
C是微軟NET開發(fā)人員的首選語言_第4頁
C是微軟NET開發(fā)人員的首選語言_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、PAGE 16第部分 C# 語 言PAGE 17PART第1章 C#的起源PART11CHAPTERCHAPTERC#的起源C#的起源C#是微軟軟.NEET開發(fā)發(fā)人員的的首選語語言,它它具有的的新功能能經(jīng)受住住了時間間的考驗驗,且始始終位于于科技前前沿,為為現(xiàn)代企企業(yè)計算算環(huán)境提提供了一一種可用用性強的的高效編編程方法法。無論論從哪個個角度看看,C#都是221世紀紀最重要要的編程程語言之之一。的顧發(fā)歷包C建動設念它何他機影本解C.Trer相正將的#和和.NEET FFrammewoork協(xié)協(xié)同工作作,一起起構(gòu)建了了一個高高度優(yōu)雅雅的編程程環(huán)境。1.1 C#的的族譜計算機語言言并不是是憑空存存在

2、的,相相反,它它們彼此此相關(guān),新新語言都都或多或或少地受受到它之之前的語語言的影影響。類類似于異異花授粉粉的過程程,一種種語言的的功能會會被另一一種語言言沿用,但但新的創(chuàng)創(chuàng)新內(nèi)容容會被集集成到現(xiàn)現(xiàn)有的環(huán)環(huán)境中,而而陳舊的的構(gòu)造則則會被消消除。就就這樣,編編程語言言不斷地地進化,編編程藝術(shù)術(shù)也不斷斷地完善善。C#也不例例外。了程計的它繼當成兩算言 C和CC+語語言的功功能,并并且與JJavaa有緊密密聯(lián)系。理理解它們們之間的的關(guān)系對對于理解解C#語語言是很很重要的的,因此此,我們們將分析析這三種種語言的的發(fā)展環(huán)環(huán)境,以以此來開開始C#語言的的研究。1.1.11 CC語言:現(xiàn)代程程序設計計的開端端

3、創(chuàng)志代設代始是nsih于世0在使N操統(tǒng)EP-機建盡些的最的aa言經(jīng)了的然C首立向編規(guī)至適C語言成長長于200世紀660年代代的“結(jié)結(jié)構(gòu)化程程序設計計”變革革。在結(jié)結(jié)構(gòu)化程程序設計計興起之之前,大大型程序序很難編編寫,因因為程序序邏輯容容易混亂亂會呈現(xiàn)現(xiàn)所謂的的“無頭頭緒的代代碼”,比比如摻雜雜大量紛紛亂而難難以跟蹤蹤的跳轉(zhuǎn)轉(zhuǎn)、調(diào)用用和返回回。而結(jié)結(jié)構(gòu)化語語言通過過增加定定義明確確的控制制語句、帶帶有局部部變量的的子程序序以及其其他方法法改進了了這個局局面。通通過使用用結(jié)構(gòu)化化的技術(shù)術(shù),程序序變得更更加組織織良好和和可靠,并并且更易易于管理理。也其構(gòu)言C首功強能雅和達一其易語上序而序)的理很得多

4、員護些天也不但C確程帶一奮的空自C成08代最的化設言然而,C語語言也有有其局限限性,其其中最為為麻煩的的一種局局限性是是其不能能夠處理理大型程程序。一一旦項目目達到了了一定的的規(guī)模,使使用C語語言就會會遇到障障礙,并并且C程程序變得得難以理理解和維維護。嚴嚴格來講講,局限限性具體體取決于于程序、程程序員和和他們所所使用的的工具,但但是只要要超出這這種局限限,C程程序就會會變得難難以管理理。1.1.22 OOOP和和C+語言的的創(chuàng)建到20世紀紀70年年代后期期,許多多項目的的規(guī)模接接近或達達到了結(jié)結(jié)構(gòu)化程程序設計計方法和和C語言言所能承承受的極極限。為為解決這這個問題題,新的的編程方方法開始始出

5、現(xiàn),該該方法稱稱為面向向?qū)ο蟪坛绦蛟O計計(obbjecct-oorieenteed pgmnO)過O程能理型序當流語即言支向程計發(fā)對本語愿終了+的生。由aetur于7在西Mr lBl室的初稱新為 tCss13名+C包語全因C是+礎(chǔ)tur對言的部展為持對序事C是言向版通建C構(gòu)C語Sotp序供種向中法移O中法樣程在面象編前要一功而去一新言言08代部間慢應并了的到09代C語漸主并圍及了世0末+經(jīng)應廣程計目C語是高的級的語C+語言言的出現(xiàn)現(xiàn)并不是是試圖要要創(chuàng)建一一種新的的程序設設計語言言,而是是對一種種已經(jīng)很很成功的的語言的的增強,理理解這一一點很重重要??偪傊Z語言的發(fā)發(fā)展是從從一種已已有的語語言

6、開始始,然后后不斷改改進直至至滿足需需求,這這是亙古古不變的的道理。1.1.33 IInteerneet和JJavaa的出現(xiàn)現(xiàn)程序設計語語言的下下一個主主要進步步是Jaava語語言,它它最初被被稱為OOak,是是由Suun MMicrrosyysteems公公司在119911年開始始使用的的。Jaava的的主要設設計人員員是Jaamess Goosliing,PPatrrickk Naaughhtonn、Chhriss Waarthh、Edd Frrankk和Miike Sheeriddan等等人也參參與了這這項工作作。Java是是一種結(jié)結(jié)構(gòu)化的的面向?qū)ο笳Z言言,它繼繼承了CC+的的語法和和

7、設計理理念。與與其說JJavaa語言創(chuàng)創(chuàng)新方面面的動力力來自于于程序設設計藝術(shù)術(shù)的進步步(盡管管從某種種程度上上是),不不如說來來自于計計算機硬硬件環(huán)境境的變化化更確切切。在IInteerneet成為為主流之之前,大大多數(shù)程程序都是是針對特特定的CCPU和和操作系系統(tǒng)而編編寫、編編譯和執(zhí)執(zhí)行的。事事實確實實如此,但但當人們們能夠很很容易地地把程序序從一種種環(huán)境移移植到另另一種環(huán)環(huán)境,并并且可移移植性相相對于其其他緊迫迫問題已已經(jīng)退居居其次時時,程序序設計人人員都樂樂于對代代碼進行行重用。然然而,隨隨著Innterrnett的興起起,多種種不同類類型的CCPU和和操作系系統(tǒng)連接接在一起起,可移移

8、植性的的問題再再次出現(xiàn)現(xiàn),而且且更加嚴嚴重。為為解決可可移植的的問題,需需要一種種新的語語言,這這種語言言就是JJavaa。盡管Javva最重重要的功功能是能能夠創(chuàng)建建跨平臺臺、可移移植的代代碼(這這是Jaava很很快獲得得認可的的原因),但值值得注意意的是,創(chuàng)創(chuàng)建Jaava語語言的原原動力并并不是IInteerneet而是是急需一一種平臺臺無關(guān)的的語言,以以便為嵌嵌入式控控制器開開發(fā)軟件件。當試試圖給IInteerneet創(chuàng)建建代碼時時,再次次遇到了了在嵌入入式開發(fā)發(fā)中遇見見的問題題 跨平臺臺、可移移植性。實實際上,IInteerneet是一一個巨大大的分布布式計算算空間,其其中存在在著多種

9、種不同類類型的計計算機。能能解決小小規(guī)模環(huán)環(huán)境中移移植性問問題的技技術(shù)同樣樣可以應應用于IInteerneet中的的大規(guī)模模環(huán)境。通程的碼成種字的代從得可然由v擬J)行節(jié)所a程夠何a虛的中另由a虛相易因?qū)Χ嗑晨蒍ava使使用字節(jié)節(jié)碼,這這和C、CC+語語言的機機制完全全不同,CC和C+程序序通常要要編譯為為可執(zhí)行行的機器器碼。機機器碼是是和特定定的CPPU和操操作系統(tǒng)統(tǒng)相關(guān)聯(lián)聯(lián)的。因因此,如如果要在在不同系系統(tǒng)上執(zhí)執(zhí)行C/C+程序,就就必須將將它們重重新編譯譯為該環(huán)環(huán)境下的的特定機機器碼。所所以,要要創(chuàng)建一一個可以以在多種種環(huán)境中中運行的的C/CC+程程序,就就需要程程序有多多種不同同的可執(zhí)執(zhí)

10、行版本本,這不不僅不切切實際,代代價也十十分昂貴貴。Jaava采采用中間間語言不不失為一一種優(yōu)雅雅而高效效的解決決方案。這這也正是是C#所所采用的的方案。如前所述,JJavaa源自CC和C+語言言,其語語法基于于C語言言,而面面向?qū)ο笙竽P蛣t則基于CC+語語言。盡盡管Jaava 代碼既既不向上上也不向向下兼容容C/CC+,但但它們的的語法及及其相似似,從而而使得大大量C/C+程序員員能夠很很容易地地轉(zhuǎn)向JJavaa。此外外,因為為Javva基于于并改進進了現(xiàn)有有的范例例,所以以Gosslinng等人人得以集集中精力力完成那那些新添添加的、富富于創(chuàng)新新的功能能。正如如Strrousstruup開

11、發(fā)發(fā)C+語言時時不需要要從頭開開始一樣樣,Goosliing在在開發(fā)JJavaa語言時時也不需需要創(chuàng)建建一門新新語言。而而且,隨隨著Jaava的的創(chuàng)建,CC和C+已成成為創(chuàng)建建新計算算機語言言的公認認的底層層基礎(chǔ)。1.1.44 CC#的創(chuàng)創(chuàng)建當Javaa成功解解決了IInteerneet環(huán)境境下的可可移植性性問題時時,另一一些缺乏乏的功能能隨即暴暴露出來來。首先先是多語語言互操操作性,也也稱為混混合語言言程序設設計,這這指的是是用一種種語言編編寫的代代碼和用用另一種種語言編編寫的代代碼協(xié)同同工作的的能力。多多語言互互操作性性是創(chuàng)建建大型分分布式軟軟件系統(tǒng)統(tǒng)所需要要的功能能,也是是創(chuàng)建軟軟件組件

12、件所期望望的功能能,因為為最有價價值的組組件往往往能夠被被盡可能能多的計計算機語語言采用用,并能能最廣泛泛地應用用于不同同的操作作環(huán)境中中。Java另另一個缺缺乏的功功能是沒沒有與WWinddowss平臺完完全集成成。盡管管Javva程序序能夠在在Winndowws環(huán)境境中運行行(假定定已經(jīng)安安裝了JJavaa虛擬機機),但但Javva和WWinddowss不是完完全兼容容的。由由于Wiindoows是是當今應應用最廣廣泛的操操作系統(tǒng)統(tǒng),因此此缺乏對對Winndowws的直直接支持持是Jaava的的一大缺缺陷。為滿足種種種需要,微微軟公司司開發(fā)了了C#語語言,它它是微軟軟在200世紀990年代

13、代后期開開發(fā)的,也也是整個個.NEET戰(zhàn)略略的一部部分。220000年中期期發(fā)布了了C#的的第一個個版本,其其首席設設計師是是Andderss Heejlssberrg。HHejllsbeerg是是當今世世界上處處于領(lǐng)導導地位的的計算機機語言專專家之一一,他取取得了許許多出色色的成就就,例如如,200世紀880年代代,極其其成功且且極具影影響力的的Turrbo Passcall軟件因因其語法法的精簡簡實現(xiàn)而而成為了了以后所所有編譯譯器的標標準,該該軟件的的最初創(chuàng)創(chuàng)建者就就是Heejlssberrg。C#與C、CC+和和Javva直接接相關(guān)。這這不是偶偶然的,因因為這三三種語言言是世界界上使用用

14、最廣泛泛、最受受的設言且創(chuàng)#時乎的程都C+Ja過#在易的基C供種的些移方因Heejlssberrg既不不需要也也沒必要要從頭開開始,而而只需將將精力集集中于特特定的改改進和創(chuàng)創(chuàng)新。C#的族譜譜如圖11-1所所示,CC#的“祖祖父”是是C,從從C那里里繼承了了語法、許許多關(guān)鍵鍵字和運運算符。接接下來,CC#基于于并改進進了C+所定定義的對對象模型型。如果果您了解解C或者者C+語言,那那么對CC#語言言將不會會感到陌陌生。圖1-1 C#的族譜譜C#和Jaava之之間的關(guān)關(guān)系稍顯顯復雜。如如前面所所說,JJavaa也是從從C和CC+衍衍生而來來,也繼繼承了CC/C+的語語法和對對象模型型。類似似于J

15、aava,CC#被設設計用來來產(chǎn)生可可移植的的代碼。但但是C#不是衍衍生于JJavaa,C#和Jaava更更像堂兄兄弟,有有共同的的祖先,但但在許多多重要方方面也有有所不同同。盡管管如此,如如果您對對Javva有一一定了解解,那么么對C#的許多多概念也也將很熟熟悉。反反過來,如如果您將將來需要要學習JJavaa語言,那那么從CC#中學學到的知知識也將將繼續(xù)有有用。C#包含許許多新增增加的功功能,本本書的后后面章節(jié)節(jié)中將詳詳細討論論這些功功能,其其中最重重要的功功能體現(xiàn)現(xiàn)在其對對軟件組組件的內(nèi)內(nèi)置支持持。事實實上,CC#已經(jīng)經(jīng)被特征征化為面面向組件件的語言言,因為為它包含含對面向向軟件組組件編程

16、程的完整整支持。例例如,CC#包含含了支持持組件創(chuàng)創(chuàng)建的功功能,如如屬性、方方法和事事件。然然而,CC#程序序能夠在在安全的的混合語語言環(huán)境境中運行行,這一一點才是是它最重重要的面面向組件件的功能能。1.1.55 CC#的發(fā)發(fā)展最初的1.0版本本發(fā)布后后,C#一直在在快速發(fā)發(fā)展。CC# 11.0發(fā)發(fā)布之后后不久,微微軟就發(fā)發(fā)布了11.1版版本。該該版本包包含一些些細小的的調(diào)整,但但是沒有有對該語語言添加加任何新新功能。然然而,隨隨著2.0版本本的發(fā)布布,情況況發(fā)生了了很大的的變化。.發(fā)C展中水件為本了新如部型ai p)名并根擴語范功覆C2版該真成算言的語并明軟該長展諾C#的下一一個主要要發(fā)布版

17、版本是33.0,這這便是本本書將要要介紹的的C#版版本。因因為C# 2.0增加加了許多多新的功功能,人人們期望望C#的的開發(fā)進進程緩慢慢一些,從從而可以以讓程序序員有時時間熟悉悉這些功功能,但但是實際際情況并并非如此此。隨著著C# 3.00的發(fā)布布,微軟軟再一次次將C#推到了了語言設設計的峰峰尖浪口口,C# 3.0添加加了一組組創(chuàng)新的的功能,這這些功能能重新定定義了編編程的發(fā)發(fā)展前景景。下面面列出了了C# 3.00版本對對該語言言添加的的功能:匿名類型自動實現(xiàn)的的特性擴展方法隱式類型的的變量拉姆達(LLambbda)表達式式語言集成查查詢(LLangguagge IInteegraatedd

18、Quueryy,LIINQ)對象和集合合初始化化程序部分方法所有這些功功能都非非常重要要并且對對該語言言有著深深遠的影影響,但但是其中中最令人人興奮的的兩個功功能是語語言集成成查詢(LINNQ)和和拉姆達達表達式式。LIINQ允允許開發(fā)發(fā)人員使使用C#編程元元素編寫寫數(shù)據(jù)庫庫樣式的的查詢。然然而,LLINQQ語法并并不是只只限于用用于數(shù)據(jù)據(jù)庫,也也可以用用于數(shù)組組和集合合。因此此,LIINQ提提供了一一種新的的方法來來處理一一些常見見的編程程任務。通通常在LLINQQ表達式式中使用用拉姆達達表達式式,但是是也可以以在其他他地方使使用這種種表達式式。拉姆姆達表達達式實現(xiàn)現(xiàn)使用拉拉姆達運運算符=的

19、函函數(shù)樣式式語法。LLINQQ和拉姆姆達表達達式的結(jié)結(jié)合為CC#編程程提供了了全新的的操作方方式。在在本書的的學習過過程中,您您將了解解這些功功能如何何徹底改改變編寫寫C#代代碼的方方式。1.2 C#如如何與.NETT Frrameeworrk相關(guān)關(guān)盡管C#語語言是一一門可以以獨立學學習的計計算機語語言,但但它和其其運行時時環(huán)境(.NEET FFrammewoork)有著特特殊關(guān)系系。原因因有兩方方面,首首先微軟軟最初設設計C#語言是是為了給給.NEET FFrammewoork創(chuàng)創(chuàng)建代碼碼。其次次,C#使用的的類庫是是由.NNET Fraamewworkk定義的的。因此此,盡管管可以將將C#

20、語語言和.NETT環(huán)境分分離開來來,但兩兩者也是是緊密相相關(guān)的。正正因為如如此,所所以應該該對.NNET Fraamewworkk以及它它對C#語言的的重要性性有一個個大致的的了解,這這一點很很重要。什么是.NNET Fraamewworkk.NET Fraamewworkk定義了了一個支支持高度度分布的的、基于于組件的的應用程程序開發(fā)發(fā)和執(zhí)行行環(huán)境。它它使得不計語夠工從Wds提安可的用程和相是N awk了非要體一公言庫(Coommoon LLangguagge RRunttimee,CLLR),它它是管理理程序執(zhí)執(zhí)行的系系統(tǒng)。公公共語言言運行庫庫有諸多多功能,作作為.NNET Fraamew

21、workk的一部部分,它它被用來來確保程程序的可可移植性性、支持持混合語語言編程程,并提提供安全全的執(zhí)行行。第二個實體體是.NNET類類庫,該該庫讓應應用程序序能夠訪訪問運行行時環(huán)境境。例如如,如果果想要執(zhí)執(zhí)行I/O操作作,例如如,在屏屏幕上顯顯示一些些內(nèi)容,就就需要使使用.NNET類類庫來實實現(xiàn)。對對于程序序設計新新手來說說,術(shù)語語“類”或或許比較較陌生,我我們將在在本書后后面的章章節(jié)中詳詳細介紹紹,現(xiàn)在在先給出出一個關(guān)關(guān)于類的的簡單定定義:類種對結(jié)用助程只序.T定特它在支N運系地行于自用E庫此程以到何.NETT環(huán)境下下運行。1.3 公共語語言運行行庫的工工作原理理運(R要.T的其原:#進譯

22、編并出行而出包殊偽(微間即I的ML的組于特P指實ML了可的語注盡S在上于v的碼兩有的當程序運行行時,由由CLRR將中間間代碼轉(zhuǎn)轉(zhuǎn)換成可可執(zhí)行代代碼。因因此,任任何編譯譯成MSSIL的的程序都都可以在在裝有CCLR的的環(huán)境上上執(zhí)行。這這是.NNET Fraamewworkk具有可可移植性性的部分分原因。微軟中間語語言是通通過JIIT編譯譯器轉(zhuǎn)換換成可執(zhí)執(zhí)行代碼碼的。JJIT的的英文全全稱是“JJustt-Inn-Tiime(實時)”。該該處理過過程如下下:當.NETT程序執(zhí)執(zhí)行時,CCLR激激活JIIT編譯譯器,JJIT編編譯器根根據(jù)程序序中各部部分的需需要將MMSILL轉(zhuǎn)換成成本機代代碼。因因此,盡盡管最初初C#程程序被編編譯成MMSILL,但實實際仍是是作為本本機代碼碼執(zhí)行的的。也就就是說,它它的運行行速度與與不轉(zhuǎn)換換時編譯譯執(zhí)行的的速度

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論