版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6-.NET和C#簡(jiǎn)介為了理解.NET的重要性,考慮一下近10年來(lái)出現(xiàn)的許多Windows技術(shù)的本質(zhì)會(huì)有一定的幫助。盡管所有的Windows操作系統(tǒng)在表面上看來(lái)完全不同,但從Windows3.1(1992年)到WindowsServer2003,在內(nèi)核上都有相同的WindowsAPI。在我們轉(zhuǎn)而使用Windows的新版本時(shí),API中增加了非常多的新功能,但這是一個(gè)演化和擴(kuò)展API的過(guò)程,并非是替換它。向后兼容性是Windows技術(shù)的極其重要的特性,也是Windows平臺(tái)的一個(gè)長(zhǎng)處,但它有一個(gè)很大的缺點(diǎn)。每次某項(xiàng)技術(shù)進(jìn)行演化,增加了新功能后,都會(huì)比它以前更復(fù)雜。很明顯,對(duì)此必須進(jìn)行改進(jìn)。Microsoft不可能一直擴(kuò)展這些開發(fā)工具和語(yǔ)言,使它們?cè)絹?lái)越復(fù)雜,既要保證能跟上最新硬件的發(fā)展步伐,又要與20世紀(jì)90年代初開始流行的Windows產(chǎn)品向后兼容。如果要得到一種簡(jiǎn)單而專業(yè)化的語(yǔ)言、環(huán)境和開發(fā)工具,讓開發(fā)人員輕松地編寫優(yōu)秀的軟件,就需要一種新的開端。這就是C#和.NET的作用。粗略地說(shuō),.NET是一種在Windows上編程的新架構(gòu)一種新API。C#是一種新語(yǔ)言,它可以利用.NETFramework及其開發(fā)環(huán)境中的所有新特性,以及在最近20年來(lái)出現(xiàn)的面向?qū)ο蟮木幊谭椒?。在繼續(xù)介紹前,必須先說(shuō)明,向后兼容性并沒有在這個(gè)演化進(jìn)程中失去?,F(xiàn)有的程序仍可以使用,.NET也兼容現(xiàn)有的軟件。軟件組件在Windows上的通信,現(xiàn)在幾乎都是使用COM實(shí)現(xiàn)的。因此,.NET能夠提供現(xiàn)有COM組件的包裝器(wrapper),以便.NET組件與之通信。Microsoft已經(jīng)擴(kuò)展了C++,提供了一種新語(yǔ)言J#,還對(duì)VB進(jìn)行了很多改進(jìn),把它轉(zhuǎn)變成為功能更強(qiáng)大的VB.NET,并允許把用這些語(yǔ)言編寫的代碼用于.NET環(huán)境。但這些語(yǔ)言都因有多年演化的痕跡,所以不能完全用現(xiàn)在的技術(shù)來(lái)編寫。在使用.NETFramework1.0和VisualStudio.NET2002時(shí),要?jiǎng)?chuàng)建可移動(dòng)應(yīng)用程序,就必須下載MicrosoftMobileInternetToolkit(MMIT)。而現(xiàn)在,有了.NETFramework1.1和VisualStudio.NET2003,就可以直接創(chuàng)建可移動(dòng)應(yīng)用程序,不需要下載其他工具包了。在使用VisualStudio.NET2003創(chuàng)建新項(xiàng)目時(shí),這是顯而易見的。例如,在查看可以創(chuàng)建的C#項(xiàng)目類型列表時(shí),會(huì)看到ASP.NETMobileWebApplication和SmartDeviceApplication。ASP.NETMobileWebApplication項(xiàng)目類型可以用于建立基于Web的可移動(dòng)應(yīng)用程序。SmartDeviceApplication項(xiàng)目類型可以創(chuàng)建用于PocketPC或其他WindowsCE設(shè)備的應(yīng)用程序。為WindowsCE設(shè)備建立的第三方客戶應(yīng)用程序利用的是CompactFramework,這是.NETFramework的刪節(jié)版本。打開任何一種可移動(dòng)項(xiàng)目類型,系統(tǒng)就會(huì)在VisualStudio.NET工具箱中列出一組可用的可移動(dòng)服務(wù)器控件,然后用戶就可以使用這些控件創(chuàng)建應(yīng)用程序。在新的架構(gòu)中,另一個(gè)大的變化是ADO.NET。ADO.NET是訪問和處理數(shù)據(jù)的.NET方式,現(xiàn)在它有兩個(gè)新的數(shù)據(jù)提供程序,其中一個(gè)用于ODBC,另一個(gè)用于Oracle。在使用.NETFramework1.0時(shí),就可以使用ODBC數(shù)據(jù)提供程序,但它需要單獨(dú)下載。另外,一旦下載,這個(gè)數(shù)據(jù)提供程序的命名空間就是Microsoft.Data.Odbc。而在.NETFramework1.1中,ODBC數(shù)據(jù)提供程序是內(nèi)置的,不需要單獨(dú)下載。而且可以通過(guò)System.Data.Odbc命名空間來(lái)使用ODBC數(shù)據(jù)源,訪問ODBC數(shù)據(jù)連接、數(shù)據(jù)適配器和數(shù)據(jù)讀取器對(duì)象。另一個(gè)新的數(shù)據(jù)提供程序用于處理Oracle數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)在企業(yè)中的應(yīng)用非常廣泛,缺乏Oracle數(shù)據(jù)提供程序常常是.NET進(jìn)入企業(yè)的一大障礙。為了使用這個(gè)新的數(shù)據(jù)提供程序,需要在項(xiàng)目中引用System.Data.OracleClient命名空間。并發(fā)執(zhí)行side-by-sideexecution是指在同一個(gè)服務(wù)器上運(yùn)行應(yīng)用程序的多個(gè)版本,其中不同的應(yīng)用程序版本使用不同的運(yùn)行庫(kù)版本。Microsoft一直都向開發(fā)人員承諾提供這個(gè)功能,但該功能總是很難可視化,因?yàn)橹荒苁褂肍ramework的一個(gè)版本。在發(fā)布了Framework的第2版.NETFramework1.1后,就可以看到Microsoft提供的這個(gè)功能了。現(xiàn)在,可以創(chuàng)建.NET應(yīng)用程序面向.NETFramework1.1的新版本,同時(shí)還可以讓面向.NETFramework1.0的舊應(yīng)用程序像以前那樣繼續(xù)運(yùn)行。.NETFramework1.1現(xiàn)在支持IPv6,IPv6是在1995年創(chuàng)建的,解決了IPv4所面臨的許多問題。如果人們一直采用IPv4,將很快用盡可用的IP地址。.NETFramework1.1通過(guò)System.Net命名空間支持IPv6,ASP.NET和XMLWeb服務(wù)也支持IPv6。在升級(jí).NETFramework時(shí),還對(duì)VisualStudio.NET本身進(jìn)行了升級(jí)。注意,在開始頁(yè)面上有一些新圖形,該頁(yè)面上對(duì)象的組織方式也有所不同。另外,新IDE最重大的變化是,一旦安裝,就不是簡(jiǎn)單地把VisualStudio.NET2002升級(jí)為VisualStudio.NET2003,而是安裝了一個(gè)全新的IDE版本。如果機(jī)器上已經(jīng)安裝了VisualStudio.NET2002,就會(huì)得到兩個(gè)完全獨(dú)立的VS.NETIDE。這樣,如果要?jiǎng)?chuàng)建和使用面向.NETFramework1.0的應(yīng)用程序,就使用VS.NET2002;如果要?jiǎng)?chuàng)建和使用面向.NETFramework1.1的應(yīng)用程序,就使用VS.NET2003。還應(yīng)注意,在打開用VS.NET2002創(chuàng)建的項(xiàng)目時(shí),系統(tǒng)會(huì)詢問是否要把項(xiàng)目升級(jí)為VS.NET2003項(xiàng)目,如果回答“是”,就會(huì)把項(xiàng)目升級(jí)為面向.NETFramework1.1的應(yīng)用程序。注意,這是一個(gè)不可逆的過(guò)程。除了這些較大的變化之外,在VS.NET2003的IDE中,Intellisense的智能化程度更高,代碼自動(dòng)完成功能更強(qiáng)。C#在某種程度上可以看作是.NET面向Windows環(huán)境的一種編程語(yǔ)言。在過(guò)去的十幾年里,Microsoft給Windows和WindowsAPI添加了許多功能,VB和C++也經(jīng)歷了許多變化。雖然VB和C++最終已成為非常強(qiáng)大的語(yǔ)言,但這兩種語(yǔ)言也存在問題,因?yàn)樗鼈儽A袅嗽瓉?lái)的一些內(nèi)容。對(duì)于VisualBasic來(lái)說(shuō),它的主要優(yōu)點(diǎn)是很容易理解,許多編程工作都很容易完成,基本上隱藏了WindowsAPI和COM組件結(jié)構(gòu)的內(nèi)涵。其缺點(diǎn)是VisualBasic從來(lái)沒有實(shí)現(xiàn)真正意義上的面向?qū)ο?,所以大型?yīng)用程序很難分解和維護(hù)。另外,因?yàn)閂B的語(yǔ)法繼承于BASIC的早期版本(BASIC主要是為了讓初學(xué)者更容易理解,而不是為了編寫大型商業(yè)應(yīng)用程序),所以不能真正成為結(jié)構(gòu)化或面向?qū)ο蟮木幊陶Z(yǔ)言。另一方面,C++NSIC++語(yǔ)言定義中有其自己的根。它與ANSI不完全兼容,因?yàn)镸icrosoft是在ANSI定義標(biāo)準(zhǔn)化之前編寫C++編譯器的,但已經(jīng)相當(dāng)接近了。遺憾的是,這導(dǎo)致了兩個(gè)問題。其一,ANSIC++是在十幾年前的技術(shù)條件下開發(fā)的,因此不支持現(xiàn)在的概念(例如Unicode字符串和生成XML文檔),某些古老的語(yǔ)法結(jié)構(gòu)是為以前的編譯器設(shè)計(jì)的(例如成員函數(shù)的聲明和定義是分開的)。其二,Microsoft同時(shí)還試圖把C++演變?yōu)橐环N用于在Windows上執(zhí)行高性能任務(wù)的語(yǔ)言在語(yǔ)言中避免添加大量Microsoft專用的關(guān)鍵字和各種庫(kù)。其結(jié)果是在Windows中,該語(yǔ)言成為了一種非常雜亂的語(yǔ)言。讓一個(gè)C++開發(fā)人員說(shuō)說(shuō)字符串有多少個(gè)定義方式就可以說(shuō)明這一點(diǎn):char*、LPTSTR、string、CString(MFC版本)、CString(WTL版本)、wchar_t*和OLECHAR*等。現(xiàn)在進(jìn)入.NET時(shí)代一種全新的環(huán)境,它對(duì)這兩種語(yǔ)言都進(jìn)行了新的擴(kuò)展。Microsoft給C++添加了許多Microsoft專用的關(guān)鍵字,并把VB演變?yōu)閂B.NET,保留了一些基本的VB語(yǔ)法,但在設(shè)計(jì)上完全不同,從實(shí)際應(yīng)用的角度來(lái)看,VB.NET是一種新語(yǔ)言。在這里,Microsoft決定給開發(fā)人員另一個(gè)選擇專門用于.NET、具有新起點(diǎn)的語(yǔ)言,即VisualC#.NET。Microsoft在正式場(chǎng)合把C#描述為一種簡(jiǎn)單、現(xiàn)代、面向?qū)ο蟆㈩愋头浅0踩?、派生于C和C++的編程語(yǔ)言。大多數(shù)獨(dú)立的評(píng)論員對(duì)其說(shuō)法是“派生于C、C++和Java”。這種描述在技術(shù)上是非常準(zhǔn)確的,但沒有涉及到該語(yǔ)言的真正優(yōu)點(diǎn)。從語(yǔ)法上看,C#非常類似于C++和Java,許多關(guān)鍵字都是相同的,C#也使用類似于C++和Java的塊結(jié)構(gòu),并用括號(hào)({})來(lái)標(biāo)記代碼塊,用分號(hào)分隔各行語(yǔ)句。對(duì)C#代碼的第一印象是它非常類似于C++或Java代碼。但在這些表面上的類似性后面,C#學(xué)習(xí)起來(lái)要比C++容易得多,但比Java難一些。其設(shè)計(jì)與現(xiàn)代開發(fā)工具的適應(yīng)性要比其他語(yǔ)言更高,它同時(shí)具有VisualBasic的易用性、高性能以及C++的低級(jí)內(nèi)存訪問性。C#包括以下一些特性:完全支持類和面向?qū)ο缶幊?,包括接口和繼承、虛函數(shù)和運(yùn)算符重載的處理。定義完整、一致的基本類型集。對(duì)自動(dòng)生成XML文檔說(shuō)明的內(nèi)置支持。自動(dòng)清理動(dòng)態(tài)分配的內(nèi)存??梢杂糜脩舳x的特性來(lái)標(biāo)記類或方法。這可以用于文檔說(shuō)明,對(duì)編譯有一定的影響(例如,把方法標(biāo)記為只在調(diào)試時(shí)編譯)。對(duì).NET基類庫(kù)的完全訪問權(quán),并易于訪問WindowsAPI??梢允褂弥羔樅椭苯觾?nèi)存訪問,但C#語(yǔ)言可以在沒有它們的條件下訪問內(nèi)存。以VB的風(fēng)格支持屬性和事件。改變編譯器選項(xiàng),可以把程序編譯為可執(zhí)行文件或.NET組件庫(kù),該組件庫(kù)可以用與ActiveX控件(COM組件)相同的方式由其他代碼調(diào)用。C#可以用于編寫ASP.NET動(dòng)態(tài)Web頁(yè)面和XMLWeb服務(wù)。應(yīng)該指出,對(duì)于上述大多數(shù)特性,B.NET和ManagedC++也具備。但C#從一開始就使用.NET,對(duì).NET特性的支持不僅是完整的,而且提供了比其他語(yǔ)言更合適的語(yǔ)法。C#語(yǔ)言本身非常類似于Java,但其中有一些改進(jìn),因?yàn)镴ava并不是為應(yīng)用于.NET環(huán)境而設(shè)計(jì)的。在結(jié)束這個(gè)主題前,還要指出C#的兩個(gè)局限性。其一是該語(yǔ)言不適用于編寫時(shí)間急迫或性能非常高的代碼,例如一個(gè)要運(yùn)行1000或1050次的循環(huán),并在不需要這些循環(huán)時(shí),立即清理它們所占用的資源。在這方面,C++可能仍是所有低級(jí)語(yǔ)言中的佼佼者。其二是C#缺乏性能極高的應(yīng)用程序所需要的關(guān)鍵功能,包括保證在代碼的特定地方運(yùn)行的內(nèi)聯(lián)函數(shù)和析構(gòu)函數(shù)。但這類應(yīng)用程序非常少。.NET運(yùn)行在Windows98、2000、XP和2003上,要使用.NET編寫代碼,需要安裝.NETSDK,除非使用內(nèi)置了.NETFramework1.0和1.1的WindowsServer2003。除非要使用文本編輯器或其他第三方開發(fā)環(huán)境來(lái)編寫C#代碼,否則一般使用VisualStudio.NET2003。運(yùn)行托管代碼不需要安裝完整的SDK,但需要.NET運(yùn)行庫(kù)。需要把.NET運(yùn)行庫(kù)分布到還沒有安裝它的客戶機(jī)上。.NET的語(yǔ)言無(wú)關(guān)性還有一些實(shí)際的限制。特別是中間語(yǔ)言在設(shè)計(jì)時(shí)就打算實(shí)現(xiàn)某些特殊的編程方法,這表示.NET語(yǔ)言必須與編程方法兼容,Microsoft為IL選擇的特定道路是傳統(tǒng)的面向?qū)ο蟮木幊?,帶有類的單一繼承性。除了傳統(tǒng)的面向?qū)ο缶幊掏?,中間語(yǔ)言還引入了接口的概念,它們顯示了在帶有COM的Windows下的第一個(gè)實(shí)現(xiàn)方式。.NET接口與COM接口不同,它們不需要支持任何COM基礎(chǔ)結(jié)構(gòu),例如,它們不是派生自IUnknown,也沒有對(duì)應(yīng)的GUID。但它們與COM接口共享下述理念:提供一個(gè)契約,實(shí)現(xiàn)給定接口的類必須提供該接口指定的方法和屬性的實(shí)現(xiàn)方式。前面介紹了使用.NET意味著要編譯為中間語(yǔ)言,即需要使用傳統(tǒng)的面向?qū)ο蟮姆椒▉?lái)編程。但這并不能提供語(yǔ)言的互操作性。畢竟,C++和Java都使用相同的面向?qū)ο蟮姆缎?,但它們?nèi)圆皇强山换ゲ僮鞯恼Z(yǔ)言。下面需要詳細(xì)探討一下語(yǔ)言互操作性的概念。首先,需要確定一下語(yǔ)言互操作性的含義。畢竟,COM允許以不同語(yǔ)言編寫的組件一起工作,即可以調(diào)用彼此的方法。這就足夠了嗎?COM是一個(gè)二進(jìn)制標(biāo)準(zhǔn),允許組件實(shí)例化其他組件,調(diào)用它們的方法或?qū)傩?,而無(wú)需考慮編寫相關(guān)組件的語(yǔ)言。但為了實(shí)現(xiàn)這個(gè)功能,每個(gè)對(duì)象都必須通過(guò)COM運(yùn)行庫(kù)來(lái)實(shí)例化,通過(guò)接口來(lái)訪問。根據(jù)關(guān)系組件的線程模型,不同線程上內(nèi)存空間和運(yùn)行組件之間要編組數(shù)據(jù),這還可能造成很大的性能損失。在極端情況下,組件駐留在可執(zhí)行文件中,而不是DLL文件中,還必須創(chuàng)建單獨(dú)的過(guò)程來(lái)運(yùn)行它們。重要的是組件要能與其他組件通信,但僅通過(guò)COM運(yùn)行庫(kù)進(jìn)行通信。無(wú)論COM是用于允許使用不同語(yǔ)言的組件直接彼此通信,或者創(chuàng)建彼此的實(shí)例,系統(tǒng)都把COM作為中間件來(lái)處理。不僅如此,COM結(jié)構(gòu)還不允許利用繼承實(shí)現(xiàn),即它喪失了面向?qū)ο缶幊痰脑S多優(yōu)勢(shì)。與其他編程語(yǔ)言一樣,中間語(yǔ)言提供了許多預(yù)定義的基本數(shù)據(jù)類型。它的一個(gè)特性是值類型和引用類型有明顯的區(qū)別。對(duì)于值類型,變量直接保存其數(shù)據(jù),而對(duì)于引用類型,變量?jī)H保存地址,對(duì)應(yīng)的數(shù)據(jù)可以在該地址中找到。在C++中,引用類型類似于通過(guò)指針來(lái)訪問變量,而在VisualBasic中,與引用類型最相似的是對(duì)象,是通過(guò)引用來(lái)訪問對(duì)象。中間語(yǔ)言也有數(shù)據(jù)存儲(chǔ)的規(guī)范:引用類型的實(shí)例總是存儲(chǔ)在一個(gè)名為托管堆的內(nèi)存區(qū)域中,值類型一般存儲(chǔ)在堆棧中(但如果值類型在引用類型中聲明為字段,它們就內(nèi)聯(lián)存儲(chǔ)在堆中)。8-.NETAndC#IntroductionInodertounderstandthesignificanceof.NE,itisusefultoemindourselvesofthenatueofmanyoftheindowstechnologiesthathaveappeaedinthepasttenyearsorso.Althoughtheymaylookquitedifeentonthesurface,alloftheindowsoperatingsystemsfomindows3.1(intoducedin1992)thoughindowsServer2003havethesamefamiliarindowsAPIattheircoe.Aswe’vepogessedthoughnewversionsofindows,hugenumbersofnewfunctionshavebeenaddedtotheAPI,butthishasbeenapocessofevolvingandextendingtheAPIratherthaneplacingit.Whilebackwadcompatibilityhasbeenacucialfeatueofindowstechnologiesandoneofthestengthsoftheindowsplatform,itdoeshaveabigdisadvantage.Everytimesometechnologyevolvesandaddsnewfeatues,itendsupabitmoecomplicatedthanitwasbefoe.Itwasclearthatsomethinghadtochange.Micosoftcouldn’tgoonfoeverextendingthesamedevelop-menttoolsandlanguages,alwaysmakingthemmoeandmoecomplexinodertosatisfytheconflict-ingdemandsofkeepingupwiththenewesthadwaeandmaintainingbackwadcompatibilitywithwhatwasaoundwhenindowsfirstbecamepopularintheearly1990s.Theecomesapointwheeyouhavetostartwithacleanslateifyouwantasimpleyetsophisticatedsetoflanguages,envion-ments,anddevelopertools,whichmakeiteasyfordeveloperstowritestate-of-the-artsoftwae.ThisfeshstartiswhatC#and.NETaeallabout.Roughlyspeaking,.NETisanewframework—anewAPI—forpogrammingontheindowsplatform.Alongwiththe.NETFramework,C#isanewlan-guagethathasbeendesignedfomscratchtoworkwith.NE,aswellastotakeadvantageofallthepogessindeveloperenvionmentsandinourunderstandingofobject-orientedpogrammingprinci-plesthathavetakenplaceoverthepast20years.Befoewecontinue,weshouldmakeitclearthatbackwadcompatibilityhasnotbeenlostinthepo-cess.Existingpogramswillcontinuetowork,and.NETwasdesignedwiththeabilitytoworkwithexistingsoftwae.CommunicationbetweensoftwaecomponentsonindowspesentlyalmostentielytakesplaceusingCOM.akingaccountofthis,.NETdoeshavetheabilitytopovidewrappersaoundexistingCOMcomponentssothat.NETcomponentscantalktothem.Itistuethatyoudon’tneedtolearnC#inodertowritecodefor.NE.MicosofthasextendedC++,povidedanothernewlanguagecalledJ#,andmadesubstantialchangestoisualBasictoturnitintothemoepowerfullanguageisualBasic.NE,inodertoallowcodewrittenineitheroftheselan-guagestotagetthe.NETenvionment.Theseotherlanguages,howeve,aehampeedbythelegacyofhavingevolvedovertheyearsratherthanhavingbeenwrittenfomthestartwithtoday’stechnologyinmind.Whenusingthe.NETFramework1.0andisualStudio.NET2002,tobeabletobuildmobileapplica-tionsyouhadtogooutanddownloadtheMicosoftMobileInternetoolkit(MMIT).No,withthe.NETFramework1.1andisualStudio.NET2003,thisisbuiltrightinandtheefoenoseparatedown-loadisequied.ThisisallquiteevidentwhenyouceateanewpojectusingisualStudio.NET2003.Forinstance,whenyoulookatthelistofavailableC#pojecttypesyoucanceate,youwillfindASP.NETMobileebApplicationandSmartDeviceApplication.ouwouldusetheASP.NETMobileebApplicationpojecttypetobuildeb-basedmobileapplications(asthenamedescribes).BuildingaSmartDeviceApplicationallowsyoutoceateapplicationsforthePocketPCoranyotherindowsCEdevice.Thethick-clientapplicationsbuiltforaindowsCEdeviceutilizetheCompactFramework,atrimmed-downversionofthe.NETFramework.Openingoneofthesemobilepojecttypes,youwillthenbepesentedwithalistofavailablemobileservercontolsintheisualStudio.NEToolboxthatyoucanthenusetobuildyourapplications.AnotherbigaeaofchangeintheframeworkistoADO.NE.ADO.NE,the.NETwayofaccessingandworkingwithdata,nowhastwonewdatapoviders—oneforODBCandanotherforOracle.AnODBCdatapoviderwasavailablewhenworkingwiththe.NETFramework1.0,butthisequiedaseparatedownload.Also,oncedownloaded,thenamespaceforthisdatapoviderwasc.iththe.NETFramework1.1,theODBCdatapoviderisbuiltrightin,andnoseparatedownloadisequied.ouwillnowbeabletoworkwithODBCdatasoucesthoughthenamespace.ThisalsogivesyouaccesstoODBCdataconnection,dataadapte,anddataeaderobjects.TheothernewdatapoviderisforworkingwithOracledatabases.Thisdatabaseisquitepopularintheenterprisespace,andthelackofanOracledatapovideroftentimeswasabigbarrierfor.NETtoenterthisspace.oworkwiththisnewdatapovide,youwillneedtomakeaefeencetothetnamespaceinyourpoject.Side-by-sideexecutionistheabilitytounmultipleversionsofanapplicationonthesameserverwheedifeentapplicationversionstagetdifeentuntimeversions.Thiswasalwayspomisedtousasdevelopers,butitwasalwayshadtovisualizeasonlyoneversionoftheframeworkwasavailable.iththeeleaseofasecondversionoftheframework(.NETFramework1.1),wecanactuallyseethatitispossibletohavethiscapabilit.Theefoe,youcanbuildnewversionsofyour.NETapplicationsthattagetthislatest.NETFrameworkversionelease,butatthesametimeyoucanallowtheolderversionsofyourapplicationthattagetthe.NETFramework1.0tocontinuetoworkjustastheyalwayshave.Pesentl,muchoftheInternetunsusingIPversion4,alsoeferedtoasIPv4.IPv4givesusIPaddessessuchas5.The.NETFramework1.1nowsupportsIPv6,whichwasceatedin1995toaddessmanyofthepoblemsthattheworldwasfacingwithIPv4.Mostofthepoblemsdealwiththefactthatbytheworld’scontinualuseofIPv4,weaerapidlyunningoutofavailableIPaddesses.IPv6issupportedinthe.NETFramework1.1thoughthetnamespaceaswellasinASP.NETandXMLebservices.Alongwiththeupgradetothe.NETFramework,isualStudio.NETitselfhasalsoundegoneanupgrade.ouwillnoticethattheeaesomenewgraphicsontheStartPageavailableandthatthingsonthispageaeoganizedalittledifeentl.Besidesthat,thebiggestthingtonoticewiththisnewIDEisthatonceinstalled,itdoesnotsimplyupgradeisualStudio.NET2002toisualStudio.NET2003.Instead,itinstallsacompletelynewversionoftheIDE,andifyoualeadyhaveVS.NET2002onyourmachine,thenyouwillhavetwocompleteVS.NETIDEsonyourbox.Theeasonforthisissothatifyouwanttobuildandworkwithapplicationsthattagetthe.NETFrameworkversion1.0,thenyouwilluseVS.NET2002,andifyouwanttobuildandworkwithapplicationsthattagetthe.NETFrameworkver-sion1.1thenyouwilluseVS.NET2003.Besidesthesebigchanges,youwillfindthatVS.NET2003isabetterIDEwithsmarterIntellisenseandcodecompletion.Inonesense,C#canbeseenasbeingthesamethingtopogramminglanguagesas.NETistotheindowsenvionment.JustasMicosofthasbeenaddingmoeandmoefeatuestoindowsandtheindowsAPIoverthepastdecade,isualBasicandC++haveundegoneexpansion.AlthoughisualBasicandC++haveendedupashugelypowerfullanguagesasaesultofthis,bothlanguagesalsosuf-ferfompoblemsduetothelegaciesofhowtheyhaveevolved.InthecaseofisualBasic6andearlie,themainstengthofthelanguagewasthefactthatitwassimpletounderstandanddidn’tmakemanypogrammingtaskseas,lagelyhidingthedetailsoftheindowsAPIandtheCOMcomponentinfrastuctuefomthedevelope.ThedownsidetothiswasthatisualBasicwasnevertulyobject-oriented,sothatlageapplicationsquicklybecomedisoganizedandhadtomaintain.Aswellasthis,becauseisualBasic’ssyntaxwasinheritedfomearlyversionsofBASIC(which,inturn,wasdesignedtobeintuitivelysimpleforbeginningpogrammerstounderstand,ratherthantowritelagecommecialapplications),itdidn’teallylenditselftowell-stuctuedorobject-orientedpograms.C++,ontheotherhand,hasitsootsintheANSIC++languagedefinition.Itisn’tcompletelyANSI-compliantforthesimpleeasonthatMicosoftfirstwoteitsC++compilerbefoetheANSIdefinitionhadbecomeoficial,butitcomesclose.Unfortunatel,thishasledtotwopoblems.First,ANSIC++hasitsootsinadecade-oldstateoftechnolog,andthisshowsupinalackofsupportformodernconcepts(suchasUnicodestringsandgeneratingXMLdocumentation),andinsomeachaicsyntaxstuctuesdesignedforthecompilersofyesteryear(suchastheseparationofdeclarationfomdefinitionofmem-berfunctions).Second,MicosofthasbeensimultaneouslytryingtoevolveC++intoalanguagethatisdesignedforhigh-performancetasksonindows,andinodertoachievethatthey’vebeenfocedtoaddahugenumberofMicosoft-specifickeywodsaswellasvariouslibrariestothelanguage.Theesultisthatonindows,thelanguagehasbecomeacompletemess.JustaskC++developershowmanydefinitionsforastringtheycanthinkof:*,R,g,g(MFCversion),g(WTLversion),*,*,andsoon.Nowenter.NET—acompletelynewenvionmentthatisgoingtoinvolvenewextensionstobothlan-guages.MicosofthasgottenaoundthisbyaddingyetmoeMicosoft-specifickeywodstoC++,andbycompletelyevampingisualBasicintoisualBasic.NE,alanguagethatetainssomeofthebasicVBsyntaxbutthatissodifeentindesignthatwecanconsiderittobe,forallpracticalpurposes,anewlanguage.It’sinthiscontextthatMicosofthasdecidedtogivedevelopersanalternative—alanguagedesignedspecificallyfor.NE,anddesignedwithacleanslate.isualC#.NETistheesult.Oficiall,MicosoftdescribesC#asa“simple,modern,object-oriented,andtype-safepogramminglanguagederivedfomCandC++.”Mostindependentobserverswouldpobablychangethatto“derivedfomC,C++,andJava.”Suchdescriptionsaetechnicallyaccuratebutdolittletoconveythebeautyoreleganceofthelan-guage.Syntacticall,C#isverysimilartobothC++andJava,tosuchanextentthatmanykeywodsaethesame,andC#alsoshaesthesameblockstuctuewithbraces(})tomarkblocksofcode,andsemi-colonstoseparatestatements.ThefirstimpessionofapieceofC#codeisthatitlooksquitelikeC++orJavacode.Behindthatinitialsimilarit,howeve,C#isaloteasiertolearnthanC++,andofcomparabledificultytoJava.Itsdesignismoeintunewithmoderndevelopertoolsthanbothofthoseotherlan-guages,andithasbeendesignedtogiveus,simultaneousl,theeaseofuseofisualBasic,andthehigh-performance,low-levelmemoryaccessofC++ifequied.SomeofthefeatuesofC#ae:Fullsupportforclassesandobject-orientedpogramming,includingbothinterfaceandimple-mentationinheritance,virtualfunctions,andoperatoroverloading.Aconsistentandwell-definedsetofbasictypes.Built-insupportforautomaticgenerationofXMLdocumentation.Automaticcleanupofdynamicallyallocatedmemor.Thefacilitytomarkclassesormethodswithuse-definedattributes.Thiscanbeusefulfordoc-umentationandcanhavesomeefectsoncompilation(forexample,markingmethodstobecompiledonlyindebugbuilds).Fullaccesstothe.NETbaseclasslibrar,aswellaseasyaccesstotheindowsAPI(ifyoueallyneedit,whichwon’tbeallthatoften).Pointersanddiectmemoryaccessaeavailableifequied,butthelanguagehasbeendesignedinsuchawaythatyoucanworkwithouttheminalmostallcases.SupportforpopertiesandeventsinthestyleofisualBasic.Justbychangingthecompileroptions,youcancompileeithertoanexecutableortoalibraryof.NETcomponentsthatcanbecalledupbyothercodeinthesamewayasActiveXcontols(COMcomponents).C#canbeusedtowriteASP.NETdynamicebpagesandXMLebservices.Mostoftheabovestatements,itshouldbepointedout,doalsoapplytoisualBasic.NETandManagedC++.ThefactthatC#isdesignedfomthestarttoworkwith.NE,howeve,meansthatitssupportforthefeatuesof.NETisbothmoecomplete,andofeedwithinthecontextofamoesuitablesyntaxthanforthoseotherlanguages.WhiletheC#languageitselfisverysimilartoJava,theeaesomeimpove-ments:inparticula,Javaisnotdesignedtoworkwiththe.NETenvionment.Befoeweleavethesubject,weshouldpointoutacoupleoflimitationsofC#.Theo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【名師一號(hào)】2020-2021學(xué)年高中英語(yǔ)北師大版必修3-雙基限時(shí)練20
- 2024-2025學(xué)年遼寧省沈陽(yáng)市高一上學(xué)期1月期末質(zhì)量監(jiān)測(cè)數(shù)學(xué)試題(含解析)
- 22《鳥的天堂》課件(共28張)
- 【名師一號(hào)】2020-2021學(xué)年高中地湘教版必修1-雙基限時(shí)練4
- 【創(chuàng)新設(shè)計(jì)】2020-2021學(xué)年高中化學(xué)課堂講義(人教版選修四)配套試題:第四章-第二節(jié)-化學(xué)電源
- 【全程復(fù)習(xí)方略】2020年數(shù)學(xué)文(廣西用)課時(shí)作業(yè):第九章-第九節(jié)空間向量的坐標(biāo)運(yùn)算
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)匯編及答案
- 【創(chuàng)新設(shè)計(jì)】2020-2021學(xué)年高中物理人教版選修3-1(浙江專用)題組訓(xùn)練-章末檢測(cè)1
- 沁園春雪朗誦-原版
- 《ZDAL資源與門戶》課件
- 新版小學(xué)道德與法治課程標(biāo)準(zhǔn)的解讀與梳理培訓(xùn)課件(道德與法治新課程標(biāo)準(zhǔn)培訓(xùn))
- 單體澆鑄尼龍
- 公司金融學(xué)張德昌課后參考答案
- DB3302-T 1015-2022 城市道路清掃保潔作業(yè)規(guī)范
- 管線探測(cè)技術(shù)介紹
- 南醫(yī)大藥用植物學(xué)實(shí)驗(yàn)指導(dǎo)14被子植物(四):傘形科、唇形科、馬鞭草科、茜草科
- 2023年新改版教科版四年級(jí)下冊(cè)科學(xué)練習(xí)題(一課一練+單元+期中+期末)
- 手術(shù)室提高患者術(shù)中保溫措施的執(zhí)行率PDCA課件
- 醫(yī)院外科腸梗阻出院小結(jié)范文
- 2023年海南省三支一扶考試真題
- 風(fēng)機(jī)支吊架計(jì)算表
評(píng)論
0/150
提交評(píng)論