




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
6-.NET和C#簡介為了理解.NET的重要性,考慮一下近10年來出現的許多Windows技術的本質會有一定的幫助。盡管所有的Windows操作系統在表面上看來完全不同,但從Windows3.1(1992年)到WindowsServer2003,在內核上都有相同的WindowsAPI。在我們轉而使用Windows的新版本時,API中增加了非常多的新功能,但這是一個演化和擴展API的過程,并非是替換它。向后兼容性是Windows技術的極其重要的特性,也是Windows平臺的一個長處,但它有一個很大的缺點。每次某項技術進行演化,增加了新功能后,都會比它以前更復雜。很明顯,對此必須進行改進。Microsoft不可能一直擴展這些開發工具和語言,使它們越來越復雜,既要保證能跟上最新硬件的發展步伐,又要與20世紀90年代初開始流行的Windows產品向后兼容。如果要得到一種簡單而專業化的語言、環境和開發工具,讓開發人員輕松地編寫優秀的軟件,就需要一種新的開端。這就是C#和.NET的作用。粗略地說,.NET是一種在Windows上編程的新架構一種新API。C#是一種新語言,它可以利用.NETFramework及其開發環境中的所有新特性,以及在最近20年來出現的面向對象的編程方法。在繼續介紹前,必須先說明,向后兼容性并沒有在這個演化進程中失去。現有的程序仍可以使用,.NET也兼容現有的軟件。軟件組件在Windows上的通信,現在幾乎都是使用COM實現的。因此,.NET能夠提供現有COM組件的包裝器(wrapper),以便.NET組件與之通信。Microsoft已經擴展了C++,提供了一種新語言J#,還對VB進行了很多改進,把它轉變成為功能更強大的VB.NET,并允許把用這些語言編寫的代碼用于.NET環境。但這些語言都因有多年演化的痕跡,所以不能完全用現在的技術來編寫。在使用.NETFramework1.0和VisualStudio.NET2002時,要創建可移動應用程序,就必須下載MicrosoftMobileInternetToolkit(MMIT)。而現在,有了.NETFramework1.1和VisualStudio.NET2003,就可以直接創建可移動應用程序,不需要下載其他工具包了。在使用VisualStudio.NET2003創建新項目時,這是顯而易見的。例如,在查看可以創建的C#項目類型列表時,會看到ASP.NETMobileWebApplication和SmartDeviceApplication。ASP.NETMobileWebApplication項目類型可以用于建立基于Web的可移動應用程序。SmartDeviceApplication項目類型可以創建用于PocketPC或其他WindowsCE設備的應用程序。為WindowsCE設備建立的第三方客戶應用程序利用的是CompactFramework,這是.NETFramework的刪節版本。打開任何一種可移動項目類型,系統就會在VisualStudio.NET工具箱中列出一組可用的可移動服務器控件,然后用戶就可以使用這些控件創建應用程序。在新的架構中,另一個大的變化是ADO.NET。ADO.NET是訪問和處理數據的.NET方式,現在它有兩個新的數據提供程序,其中一個用于ODBC,另一個用于Oracle。在使用.NETFramework1.0時,就可以使用ODBC數據提供程序,但它需要單獨下載。另外,一旦下載,這個數據提供程序的命名空間就是Microsoft.Data.Odbc。而在.NETFramework1.1中,ODBC數據提供程序是內置的,不需要單獨下載。而且可以通過System.Data.Odbc命名空間來使用ODBC數據源,訪問ODBC數據連接、數據適配器和數據讀取器對象。另一個新的數據提供程序用于處理Oracle數據庫。該數據庫在企業中的應用非常廣泛,缺乏Oracle數據提供程序常常是.NET進入企業的一大障礙。為了使用這個新的數據提供程序,需要在項目中引用System.Data.OracleClient命名空間。并發執行side-by-sideexecution是指在同一個服務器上運行應用程序的多個版本,其中不同的應用程序版本使用不同的運行庫版本。Microsoft一直都向開發人員承諾提供這個功能,但該功能總是很難可視化,因為只能使用Framework的一個版本。在發布了Framework的第2版.NETFramework1.1后,就可以看到Microsoft提供的這個功能了。現在,可以創建.NET應用程序面向.NETFramework1.1的新版本,同時還可以讓面向.NETFramework1.0的舊應用程序像以前那樣繼續運行。.NETFramework1.1現在支持IPv6,IPv6是在1995年創建的,解決了IPv4所面臨的許多問題。如果人們一直采用IPv4,將很快用盡可用的IP地址。.NETFramework1.1通過System.Net命名空間支持IPv6,ASP.NET和XMLWeb服務也支持IPv6。在升級.NETFramework時,還對VisualStudio.NET本身進行了升級。注意,在開始頁面上有一些新圖形,該頁面上對象的組織方式也有所不同。另外,新IDE最重大的變化是,一旦安裝,就不是簡單地把VisualStudio.NET2002升級為VisualStudio.NET2003,而是安裝了一個全新的IDE版本。如果機器上已經安裝了VisualStudio.NET2002,就會得到兩個完全獨立的VS.NETIDE。這樣,如果要創建和使用面向.NETFramework1.0的應用程序,就使用VS.NET2002;如果要創建和使用面向.NETFramework1.1的應用程序,就使用VS.NET2003。還應注意,在打開用VS.NET2002創建的項目時,系統會詢問是否要把項目升級為VS.NET2003項目,如果回答“是”,就會把項目升級為面向.NETFramework1.1的應用程序。注意,這是一個不可逆的過程。除了這些較大的變化之外,在VS.NET2003的IDE中,Intellisense的智能化程度更高,代碼自動完成功能更強。C#在某種程度上可以看作是.NET面向Windows環境的一種編程語言。在過去的十幾年里,Microsoft給Windows和WindowsAPI添加了許多功能,VB和C++也經歷了許多變化。雖然VB和C++最終已成為非常強大的語言,但這兩種語言也存在問題,因為它們保留了原來的一些內容。對于VisualBasic來說,它的主要優點是很容易理解,許多編程工作都很容易完成,基本上隱藏了WindowsAPI和COM組件結構的內涵。其缺點是VisualBasic從來沒有實現真正意義上的面向對象,所以大型應用程序很難分解和維護。另外,因為VB的語法繼承于BASIC的早期版本(BASIC主要是為了讓初學者更容易理解,而不是為了編寫大型商業應用程序),所以不能真正成為結構化或面向對象的編程語言。另一方面,C++NSIC++語言定義中有其自己的根。它與ANSI不完全兼容,因為Microsoft是在ANSI定義標準化之前編寫C++編譯器的,但已經相當接近了。遺憾的是,這導致了兩個問題。其一,ANSIC++是在十幾年前的技術條件下開發的,因此不支持現在的概念(例如Unicode字符串和生成XML文檔),某些古老的語法結構是為以前的編譯器設計的(例如成員函數的聲明和定義是分開的)。其二,Microsoft同時還試圖把C++演變為一種用于在Windows上執行高性能任務的語言在語言中避免添加大量Microsoft專用的關鍵字和各種庫。其結果是在Windows中,該語言成為了一種非常雜亂的語言。讓一個C++開發人員說說字符串有多少個定義方式就可以說明這一點:char*、LPTSTR、string、CString(MFC版本)、CString(WTL版本)、wchar_t*和OLECHAR*等。現在進入.NET時代一種全新的環境,它對這兩種語言都進行了新的擴展。Microsoft給C++添加了許多Microsoft專用的關鍵字,并把VB演變為VB.NET,保留了一些基本的VB語法,但在設計上完全不同,從實際應用的角度來看,VB.NET是一種新語言。在這里,Microsoft決定給開發人員另一個選擇專門用于.NET、具有新起點的語言,即VisualC#.NET。Microsoft在正式場合把C#描述為一種簡單、現代、面向對象、類型非常安全、派生于C和C++的編程語言。大多數獨立的評論員對其說法是“派生于C、C++和Java”。這種描述在技術上是非常準確的,但沒有涉及到該語言的真正優點。從語法上看,C#非常類似于C++和Java,許多關鍵字都是相同的,C#也使用類似于C++和Java的塊結構,并用括號({})來標記代碼塊,用分號分隔各行語句。對C#代碼的第一印象是它非常類似于C++或Java代碼。但在這些表面上的類似性后面,C#學習起來要比C++容易得多,但比Java難一些。其設計與現代開發工具的適應性要比其他語言更高,它同時具有VisualBasic的易用性、高性能以及C++的低級內存訪問性。C#包括以下一些特性:完全支持類和面向對象編程,包括接口和繼承、虛函數和運算符重載的處理。定義完整、一致的基本類型集。對自動生成XML文檔說明的內置支持。自動清理動態分配的內存。可以用用戶定義的特性來標記類或方法。這可以用于文檔說明,對編譯有一定的影響(例如,把方法標記為只在調試時編譯)。對.NET基類庫的完全訪問權,并易于訪問WindowsAPI。可以使用指針和直接內存訪問,但C#語言可以在沒有它們的條件下訪問內存。以VB的風格支持屬性和事件。改變編譯器選項,可以把程序編譯為可執行文件或.NET組件庫,該組件庫可以用與ActiveX控件(COM組件)相同的方式由其他代碼調用。C#可以用于編寫ASP.NET動態Web頁面和XMLWeb服務。應該指出,對于上述大多數特性,B.NET和ManagedC++也具備。但C#從一開始就使用.NET,對.NET特性的支持不僅是完整的,而且提供了比其他語言更合適的語法。C#語言本身非常類似于Java,但其中有一些改進,因為Java并不是為應用于.NET環境而設計的。在結束這個主題前,還要指出C#的兩個局限性。其一是該語言不適用于編寫時間急迫或性能非常高的代碼,例如一個要運行1000或1050次的循環,并在不需要這些循環時,立即清理它們所占用的資源。在這方面,C++可能仍是所有低級語言中的佼佼者。其二是C#缺乏性能極高的應用程序所需要的關鍵功能,包括保證在代碼的特定地方運行的內聯函數和析構函數。但這類應用程序非常少。.NET運行在Windows98、2000、XP和2003上,要使用.NET編寫代碼,需要安裝.NETSDK,除非使用內置了.NETFramework1.0和1.1的WindowsServer2003。除非要使用文本編輯器或其他第三方開發環境來編寫C#代碼,否則一般使用VisualStudio.NET2003。運行托管代碼不需要安裝完整的SDK,但需要.NET運行庫。需要把.NET運行庫分布到還沒有安裝它的客戶機上。.NET的語言無關性還有一些實際的限制。特別是中間語言在設計時就打算實現某些特殊的編程方法,這表示.NET語言必須與編程方法兼容,Microsoft為IL選擇的特定道路是傳統的面向對象的編程,帶有類的單一繼承性。除了傳統的面向對象編程外,中間語言還引入了接口的概念,它們顯示了在帶有COM的Windows下的第一個實現方式。.NET接口與COM接口不同,它們不需要支持任何COM基礎結構,例如,它們不是派生自IUnknown,也沒有對應的GUID。但它們與COM接口共享下述理念:提供一個契約,實現給定接口的類必須提供該接口指定的方法和屬性的實現方式。前面介紹了使用.NET意味著要編譯為中間語言,即需要使用傳統的面向對象的方法來編程。但這并不能提供語言的互操作性。畢竟,C++和Java都使用相同的面向對象的范型,但它們仍不是可交互操作的語言。下面需要詳細探討一下語言互操作性的概念。首先,需要確定一下語言互操作性的含義。畢竟,COM允許以不同語言編寫的組件一起工作,即可以調用彼此的方法。這就足夠了嗎?COM是一個二進制標準,允許組件實例化其他組件,調用它們的方法或屬性,而無需考慮編寫相關組件的語言。但為了實現這個功能,每個對象都必須通過COM運行庫來實例化,通過接口來訪問。根據關系組件的線程模型,不同線程上內存空間和運行組件之間要編組數據,這還可能造成很大的性能損失。在極端情況下,組件駐留在可執行文件中,而不是DLL文件中,還必須創建單獨的過程來運行它們。重要的是組件要能與其他組件通信,但僅通過COM運行庫進行通信。無論COM是用于允許使用不同語言的組件直接彼此通信,或者創建彼此的實例,系統都把COM作為中間件來處理。不僅如此,COM結構還不允許利用繼承實現,即它喪失了面向對象編程的許多優勢。與其他編程語言一樣,中間語言提供了許多預定義的基本數據類型。它的一個特性是值類型和引用類型有明顯的區別。對于值類型,變量直接保存其數據,而對于引用類型,變量僅保存地址,對應的數據可以在該地址中找到。在C++中,引用類型類似于通過指針來訪問變量,而在VisualBasic中,與引用類型最相似的是對象,是通過引用來訪問對象。中間語言也有數據存儲的規范:引用類型的實例總是存儲在一個名為托管堆的內存區域中,值類型一般存儲在堆棧中(但如果值類型在引用類型中聲明為字段,它們就內聯存儲在堆中)。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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石棉在分選機械中的應用考核試卷
- 紡織品的智能監測技術在健康領域的應用考核試卷
- 紡織環保與可持續發展考試考核試卷
- 南京高三語文模擬作文
- 電氣安裝中的輸電線路故障定位與處理考核試卷
- 竹材采運成本效益分析與優化考核試卷
- 靜脈輸液工具的合理選擇 3
- 山西省百師聯盟2024?2025學年高二下學期3月聯考 數學試題【含答案】
- 臨床老年人噎食原因、危害及海姆立克急救法緊急施救操作
- 煙臺市重點中學2025屆初三4月質量檢查語文試題試卷含解析
- 海洋牧場原理與技術智慧樹知到期末考試答案章節答案2024年魯東大學
- 商業綜合體物業管理服務標準
- 公司個人現實表現材料
- 2024年浙江杭州市林水局所屬事業單位招聘擬聘人員招聘歷年高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 再生資源行業培訓課件
- DB35T 2094-2022 公路工程竣(交)工驗收質量檢測技術規程
- STEM教育理念下大班科學活動的指導策略研究
- 對于慢性骨髓炎的護理
- 地下室手機信號解決方案
- 財務咨詢顧問協議樣本
- 光電軸角編碼器校準規范
評論
0/150
提交評論