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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論