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