《《C#語(yǔ)言程序設(shè)計(jì)》第1章.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《C#語(yǔ)言程序設(shè)計(jì)》第1章.ppt(16頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、C#語(yǔ)言程序設(shè)計(jì),李繼武 編著,清華大學(xué)出版社,C#語(yǔ)言程序設(shè)計(jì),2,1999年,微軟公司秘密開(kāi)發(fā)一個(gè)名叫COOL的新語(yǔ)言,具體內(nèi)幕無(wú)從知曉,2000年6月26日,微軟公司在美國(guó)奧蘭多(美國(guó)佛羅里達(dá)州中部城市)舉行的“職業(yè)開(kāi)發(fā)人員技術(shù)大會(huì)”(Professional Developer Conference,PDC 2000)上,推出了這個(gè)新語(yǔ)言,并改名為C#(讀作C Sharp) 微軟公司為什么要開(kāi)發(fā)C#語(yǔ)言? 早在1995年,Sun公司的James Gosling(詹姆斯格斯林)開(kāi)發(fā)出了Java 語(yǔ)言。 Java語(yǔ)言簡(jiǎn)單、面向?qū)ο?、功能?qiáng)大,并且由于JVM虛擬機(jī)的緣故,它可以跨平臺(tái)運(yùn)行。,
2、1.1 C#語(yǔ)言簡(jiǎn)介,C#語(yǔ)言程序設(shè)計(jì),3,Java特性使 Java 語(yǔ)言逐漸成為企業(yè)級(jí)應(yīng)用系統(tǒng)開(kāi)發(fā)的首選工具,越來(lái)越多使用C/C++開(kāi)發(fā)軟件的人員開(kāi)始轉(zhuǎn)向使用 Java 來(lái)進(jìn)行應(yīng)用系統(tǒng)開(kāi)發(fā)。微軟公司感覺(jué)到了Java的壓力,于是在Anders Hejlsberg(安德斯海爾斯伯格)領(lǐng)導(dǎo)下,迅速開(kāi)發(fā)出了Java語(yǔ)言的微軟版Visual J++。 這個(gè)產(chǎn)品很快成為強(qiáng)大的Windows應(yīng)用開(kāi)發(fā)平臺(tái),并成為業(yè)界公認(rèn)的優(yōu)秀Java編譯器。 Sun公司以Visual J++主要用在Windows平臺(tái)系統(tǒng)開(kāi)發(fā)為由,起訴微軟公司違反了Java開(kāi)發(fā)平臺(tái)的中立性,并中止了對(duì)微軟公司的Java授權(quán),微軟公司陷入被動(dòng)
3、局面。,1.1.1 C#語(yǔ)言誕生的背景,C#語(yǔ)言程序設(shè)計(jì),4,為了徹底擺脫受制于Java語(yǔ)言的局面,微軟公司于1998年12月啟動(dòng)了一個(gè)全新的語(yǔ)言項(xiàng)目COOL。 它是C#語(yǔ)言的前身,這個(gè)語(yǔ)言的首席開(kāi)發(fā)者仍然是Anders Hejlsberg,他是Borland公司的創(chuàng)始人之一,Delphi之父,由于后期在Borland公司未受重用,比爾蓋茨慧眼識(shí)才,三故茅廬將他請(qǐng)到了微軟公司主持Visual J++的開(kāi)發(fā)工作。 由于Visual J++語(yǔ)言陷入僵局,Anders Hejlsberg干脆另起爐灶,于1999年開(kāi)始了C#語(yǔ)言的開(kāi)發(fā)歷程。 1999年7月,COOL語(yǔ)言完成了一個(gè)內(nèi)部版本。2000年2
4、月,正式更名為C#。 2000年7月,發(fā)布了C#語(yǔ)言的第一個(gè)預(yù)覽版。 2002年2月,推出了C#語(yǔ)言的正式版C#1.0。,1.1.1 C#語(yǔ)言誕生的背景,C#語(yǔ)言程序設(shè)計(jì),5,1、C#語(yǔ)言是一門簡(jiǎn)單的編程語(yǔ)言 當(dāng)然,簡(jiǎn)單是相對(duì)的概念,比如C/C++這類語(yǔ)言,它們的表達(dá)能力很強(qiáng),但是比較瑣碎,換句話說(shuō),程序員需要關(guān)注的細(xì)節(jié)特別多,而C#語(yǔ)言借鑒了C/C++以及Java語(yǔ)言的優(yōu)點(diǎn),避免了它們的不足,語(yǔ)法上變得簡(jiǎn)潔而優(yōu)雅。 2、C#語(yǔ)言是一門現(xiàn)代的編程語(yǔ)言 說(shuō)它現(xiàn)代,這要談一談編程語(yǔ)言的歷史。自計(jì)算機(jī)誕生以來(lái),最初的機(jī)器語(yǔ)言只能由當(dāng)時(shí)的科學(xué)家來(lái)使用,其后的匯編語(yǔ)言開(kāi)始流行,但學(xué)起來(lái)也是相當(dāng)難,鑒于此
5、,高級(jí)語(yǔ)言誕生了,同機(jī)器語(yǔ)言和匯編語(yǔ)言相比,高級(jí)語(yǔ)言不依賴于計(jì)算機(jī)硬件,而且學(xué)習(xí)難度顯著降低了,并且這期間計(jì)算機(jī)開(kāi)始逐漸普及,這使得通過(guò)高級(jí)語(yǔ)言進(jìn)行編程成為一種社會(huì)上的職業(yè)需求。,1.1.2 C#語(yǔ)言的特點(diǎn),C#語(yǔ)言程序設(shè)計(jì),6,3、C#語(yǔ)言是一門面向?qū)ο蟮木幊陶Z(yǔ)言 目前,主流的編程語(yǔ)言幾乎都支持面向?qū)ο缶幊?,比如Java、VB、C++等等,同它們相比,C#語(yǔ)言在支持面向?qū)ο缶幊谭矫孀龅酶兇?、更徹底。通過(guò)C++,我們可以面向?qū)ο缶幊?,也可以不面向?qū)ο缶幊蹋瑥倪@個(gè)角度看,C++是通用的編程語(yǔ)言,而不是純正的面向?qū)ο缶幊陶Z(yǔ)言,當(dāng)然,這不是C++語(yǔ)言的毛病,這是C++語(yǔ)言犀利的地方,不過(guò),在面向?qū)?/p>
6、象理論大行其道的今天,C++對(duì)不面向?qū)ο缶幊痰闹С郑沟盟恼Z(yǔ)法更復(fù)雜、學(xué)習(xí)難度更大。,1.1.2 C#語(yǔ)言的特點(diǎn),C#語(yǔ)言程序設(shè)計(jì),7,4、C#語(yǔ)言是一門類型安全的語(yǔ)言 所謂類型安全就是指不可以將A類型強(qiáng)制轉(zhuǎn)換成B類型,從而對(duì)轉(zhuǎn)換后的A類型進(jìn)行B類型上定義的操作,換句話說(shuō),變量類型定義后,不能將其再轉(zhuǎn)換成其它類型(非本類型或非本類型的子類型)。由于類型安全直接涉及到內(nèi)存安全,所以保證類型安全是CLR的使命之一,C#可以直接享受類型安全所帶來(lái)的好處。 綜上所述,C#語(yǔ)言是一門簡(jiǎn)單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩木幊陶Z(yǔ)言。,1.1.2 C#語(yǔ)言的特點(diǎn),C#語(yǔ)言程序設(shè)計(jì),8,沒(méi)有.NET框架,單純說(shuō)C
7、#語(yǔ)言是沒(méi)有意義的,因?yàn)镃#語(yǔ)言編程離不開(kāi).NET框架的支持,如果非要比較二者的重要性,那顯然.NET框架更重要,因?yàn)闆](méi)有C#語(yǔ)言,還有其它語(yǔ)言(比如VB.NET)可以使用.NET框架,而沒(méi)有.NET框架,C#語(yǔ)言將無(wú)法生存。那么,.NET框架到底是什么?,1.2 .NET框架簡(jiǎn)介,C#語(yǔ)言程序設(shè)計(jì),9,1、C/API開(kāi)發(fā)模式 早期的C語(yǔ)言開(kāi)發(fā)時(shí)期,程序員需要花大氣力掌握數(shù)千Windows API(Application Programming Interface,應(yīng)用程序編程接口)函數(shù),然后以一種很費(fèi)時(shí)的方式開(kāi)發(fā)出了無(wú)數(shù)成功的應(yīng)用。 2、C++/MFC開(kāi)發(fā)模式 C++給程序員帶來(lái)了面向?qū)ο蟮?/p>
8、編程理念,擺脫了過(guò)程化編程的冗長(zhǎng)與乏味,而且有了以C++類的形式封裝了Windows API的MFC(Microsoft Foundation Classes)框架,這些都大大減少了應(yīng)用程序開(kāi)發(fā)人員的工作量。不過(guò),使用C++與MFC開(kāi)發(fā)程序依然是個(gè)艱難且易犯錯(cuò)誤的過(guò)程。,1.2.1 .NET框架誕生的背景,C#語(yǔ)言程序設(shè)計(jì),10,3、Java/J2EE開(kāi)發(fā)模式 Java語(yǔ)言在保留了C++強(qiáng)大的同時(shí)剔除了C++中令人生厭的語(yǔ)法,伴隨著網(wǎng)絡(luò)的興起,Java及J2EE(Java 2 Enterprise Edition)框架迅速贏得了越來(lái)越多程序員的青睞,它們踩準(zhǔn)了軟件開(kāi)發(fā)趨勢(shì)的節(jié)奏,自然獲得了市場(chǎng)
9、的共振。通過(guò)Java語(yǔ)言和J2EE框架進(jìn)行企業(yè)級(jí)應(yīng)用系統(tǒng)開(kāi)發(fā)事實(shí)證明是明智的選擇。 4、C#/.NET開(kāi)發(fā)模式 C#語(yǔ)言與.NET框架的出現(xiàn),徹底顛覆了Windows系統(tǒng)軟件開(kāi)發(fā)的傳統(tǒng)模式,程序員可以從繁雜冗長(zhǎng)的編程細(xì)節(jié)中稍事解脫,把自己更多的注意力投向用戶的需求以及問(wèn)題的真正解決方案上來(lái),等到需要編程時(shí),簡(jiǎn)潔明快的C#語(yǔ)言和強(qiáng)大的.NET框架為實(shí)現(xiàn)解決方案提供了有力的支持。,1.2.1 .NET框架誕生的背景,C#語(yǔ)言程序設(shè)計(jì),11,.NET框架主要由CLR和.NET類庫(kù)這兩部分組成。 1、CLR CLR(Common Language Runtime,公共語(yǔ)言運(yùn)行時(shí))是.NET程序的虛擬機(jī)
10、平臺(tái),此處重點(diǎn)講解它的三個(gè)特性:平臺(tái)無(wú)關(guān)性、內(nèi)存的自動(dòng)管理和代碼驗(yàn)證功能。 (1)平臺(tái)無(wú)關(guān)性 CLR(Common Language Runtime,公共語(yǔ)言運(yùn)行時(shí))在整個(gè).NET平臺(tái)中是個(gè)什么角色?要說(shuō)清楚這個(gè)問(wèn)題,大家先看看圖1-1。,1.2.2 .NET框架的組成,C#語(yǔ)言程序設(shè)計(jì),12,1.2.2 .NET框架的組成,從圖1-1中我們可以看出,C#開(kāi)發(fā)的.NET程序是以CLR為運(yùn)行平臺(tái)的,這與C++不同。.NET程序?yàn)槭裁匆捎眠@種中間語(yǔ)言加虛擬機(jī)運(yùn)行的模式?這當(dāng)然是有原因的,這其中獲得的最大好處就是.NET程序可以跨平臺(tái)了?,F(xiàn)在我們看看用C#語(yǔ)言開(kāi)發(fā)的.NET程序,由于它并不直接編譯
11、成本機(jī)代碼,不需要CPU直接識(shí)別,所以它就沒(méi)有了CPU架構(gòu)的依賴,又由于它不直接同操作系統(tǒng)打交道,而是同CLR打交道,這就沒(méi)有了操作系統(tǒng)的依賴,沒(méi)有了這兩個(gè)依賴,它就實(shí)現(xiàn)了平臺(tái)的無(wú)關(guān)性。,C#語(yǔ)言程序設(shè)計(jì),13,1.2.2 .NET框架的組成,(2)內(nèi)存的自動(dòng)管理 .NET程序需要內(nèi)存時(shí)是向CLR申請(qǐng),而CLR將它所掌控的內(nèi)存劃分成棧內(nèi)存和堆內(nèi)存,其中棧內(nèi)存用后自動(dòng)釋放無(wú)需管理,堆內(nèi)存在分配給.NET程序后,也不需要.NET程序員寫(xiě)代碼釋放,而是由CLR來(lái)管理,CLR有一個(gè)單獨(dú)的線程專門用來(lái)管理它分配出去的堆內(nèi)存,當(dāng)它發(fā)現(xiàn)某塊堆內(nèi)存處于無(wú)主的廢棄狀態(tài)時(shí),就會(huì)主動(dòng)將其回收,這種機(jī)制有個(gè)專門術(shù)
12、語(yǔ)叫“垃圾回收”,有了這種機(jī)制,.NET程序員不用再擔(dān)心出現(xiàn)“內(nèi)存泄露”了。 (3)代碼驗(yàn)證功能 .NET程序由于被編譯成中間代碼,因此在運(yùn)行前需要先由CLR即時(shí)編譯成本機(jī)代碼然后再運(yùn)行,事實(shí)上,CLR在編譯前有一個(gè)驗(yàn)證過(guò)程,該過(guò)程檢查中間代碼是否安全,也就是要確保它們不會(huì)訪問(wèn)它們不應(yīng)該訪問(wèn)的內(nèi)存。,C#語(yǔ)言程序設(shè)計(jì),14,1.2.2 .NET框架的組成,2、.NET類庫(kù) .NET程序員的編程工作就是基于.NET類庫(kù)展開(kāi)的,所以.NET類庫(kù)是.NET程序員學(xué)習(xí)的重點(diǎn)。 常用的幾個(gè)命名空間: (1)System.Data命名空間 (2)System.Drawing命名空間 (3)Sy
13、stem.IO命名空間 (4)System.Net命名空間 (5)System.Web命名空間 (6)System.Web.UI命名空間 (7)System.Windows.Forms命名空間 (8)System.Xml命名空間 (9)System.Linq命名空間,C#語(yǔ)言程序設(shè)計(jì),15,1.3 Visual Studio.NET簡(jiǎn)介,微軟提供的Visual Studio.NET(簡(jiǎn)稱為VS.NET)集成開(kāi)發(fā)平臺(tái)無(wú)疑是業(yè)界最好用的開(kāi)發(fā)平臺(tái)之一,程序員通過(guò)它可以快捷高效地進(jìn)行軟件開(kāi)發(fā),事實(shí)上,很多程序員喜歡微軟的技術(shù),就是因?yàn)橄矚gVS.NET的緣故,有過(guò)Java語(yǔ)言編程經(jīng)歷的人都知道,Java語(yǔ)言和J2EE平臺(tái)沒(méi)有一個(gè)像VS.NET那樣好用的集成開(kāi)發(fā)平臺(tái),這不能不說(shuō)是Java程序員的痛苦。 C#語(yǔ)言是程序員手中的編程工具,.NET框架為程序員提供了編程時(shí)要使用的各種功能各異的類庫(kù),而VS.NET集成開(kāi)發(fā)平臺(tái)則為程序員便捷地使用C#語(yǔ)言操作.NET類庫(kù)提供了方便的舞臺(tái),所以對(duì)于C#程序員來(lái)說(shuō),這三者往往是分不開(kāi)的,微軟也經(jīng)常將三者的版本更新一同發(fā)布,下面大家就通過(guò)表1-1來(lái)了解一下這些產(chǎn)品的版本變化歷程。,C#語(yǔ)言程序設(shè)計(jì),16,1.3 Visual Studio.NET簡(jiǎn)介,