版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章C#語言基礎(chǔ)C#語言結(jié)合和已有計算機編程語言和軟件的優(yōu)點:VisualC+,VisualBasic,Delphi,C+Builder,JBuilder,Java等。3.1 NGWSRuntime技術(shù)基礎(chǔ)XMLW«bWebServicesFormsV/indwxtFormsDataandXMLCtassesBaseFiameworkClassesCommonLanguageRuniimc3.1.1 NGWSRuntime技術(shù)簡介用C#語言編寫的源程序,必須用C#語言編譯器將C#語言源程序編譯為中間語言代碼(受管制代碼,受NGWSRuntimet制),不需要鏈接,形成擴(kuò)展名為exe
2、或dll文件。中間語言代碼不是CPU可執(zhí)行的機器碼,中間語言代碼必須由NGWSRuntime將中間語言代碼翻譯為CPU可執(zhí)行的機器碼,由CPI執(zhí)行。因此NGWSRuntime為C#語言中間語言代碼運行提供了一種運行時環(huán)境。它和Basic語言執(zhí)行方法類似,但也不完全相同,Basic語言是解釋執(zhí)行Basic語言源程序,其方法是逐句將Basic語言源程序翻譯為CPU可執(zhí)行的機器碼。而C#語言是用NGWSRuntime中的既時編譯器將中間語言代碼翻譯為CPU可執(zhí)行的機器碼,執(zhí)行速度比Basic快。在這點上C#語言和JAVA語言基本相同。這種執(zhí)行方法使運行速度變慢,但帶來其它一些好處,主要有:交叉語言集
3、成:.NET系統(tǒng)包括如下語言:C#C+VBJ#。所有這些語言的源程序,都編譯為相同的中間語言代碼,由NGWSRuntimcfe責(zé)執(zhí)行。自動內(nèi)存管理:NGWSRuntim內(nèi)建垃圾收集器,當(dāng)對象或變量的生命周期結(jié)束時,垃圾收集器負(fù)責(zé)收回不被使用的對象或變量占用的存儲空間。不必象C+語言,用new語句建立的對象,必須用delete語句釋放對象占用的存儲空間。也就是說,NGWSRuntim具有自動內(nèi)存管理功能。交叉語言異常處理:由于所有語言的源程序,都編譯為相同的中間語言代碼,由NGWSRuntim負(fù)責(zé)執(zhí)行,因此異常處理方法是一致的。這在調(diào)試一種語言調(diào)用另一種語言的子程序時,顯得特別方便。增加安全:C
4、#語言不支持指針,一切對內(nèi)存的訪問都必須通過對象的事例變量來實現(xiàn),只允許訪問內(nèi)存中允許訪問的部分,這就防止病毒程序使用非法指針訪問私有成員。也避免指針的誤操作產(chǎn)生的錯誤。NGWSRuntim執(zhí)行中間語言代碼前,要對中間語言代碼的安全性,完整性進(jìn)行驗證,防止病毒對中間語言代碼的修改。版本支持:C#是以組件為基礎(chǔ)的編程語言,組件可能要升級,由此可能帶來一系列問題,有可能使用舊組件可以運行,使用新組件就運行不了,而新組件可能是安裝其它程序時自動替換的。NGWSRuntim解決了這個問題。組件交互簡化模式:采用NGWSRuntim運行環(huán)境,使用不同語言設(shè)計的組件,可以互相通用,可以從其它語言定義的類派
5、生出本語言的新類。給使用者帶來極大方便。1中間語言和元數(shù)據(jù)用C#語言編寫的源程序,必須用C#語言編譯器將C#語言源程序編譯為中間語言代碼(受管制代碼,受NGWSRuntimer制)。中間語言代碼不是CPU可執(zhí)行的機器碼,必須用NGWSRuntim中的既時編譯器將中間語言代碼翻譯為CPU可執(zhí)行的機器碼,由CPU執(zhí)行。用C#語言編譯器將C#語言源程序編譯后,不但包括中間語言代碼,還包括元數(shù)據(jù)。元數(shù)據(jù)是類型庫、注冊表及其它一些中間語言代碼運行所需信息。中間語言和元數(shù)據(jù)共同包含在C#可執(zhí)行文件或.dll文件中。2既時編譯器既時編譯器負(fù)責(zé)將中間語言代碼翻譯為CPU可執(zhí)行的機器碼,由CPU區(qū)執(zhí)行。3.1.
6、2 虛擬對象系統(tǒng)(VOS)虛擬對象系統(tǒng)(VOSVisualObjectSystem)是NGWSRuntime勾架的基礎(chǔ),主要由4部分組成:類型系統(tǒng).NET系統(tǒng)包括如下語言:C#C+VBJ#。.NET跨語言集成的特性來自于虛擬對象系統(tǒng)VOS的支持。在不同語言間進(jìn)行代碼復(fù)用和應(yīng)用集成中所遇到的最大問題是不同語言類型系統(tǒng)間的相容性問題??梢韵胂蟛煌恼Z言雖然語法結(jié)勾大體相同,但數(shù)據(jù)類型與語言環(huán)境本身的各種特點聯(lián)系緊密,很難想象一種解釋性的語言所擁有的數(shù)據(jù)類型會與一種編譯語言相同,而即使相同的數(shù)據(jù)類型在不同的語言環(huán)境中表示的意義也存在差別,例如同樣是整數(shù)類型,在MSSQL中的長度是32位,而在VB中卻
7、是16位,至于日期時間與字符串類型在這方面的區(qū)別就更加明顯了。VOS的建立就是為了改變這種狀況,它既支持過程性語言也支持面向?qū)ο蟮恼Z言,同時提供了一個類型豐富的系統(tǒng)來容納它所支持的各種語言的特性,它在最大程度上屏蔽了不同語言類型系統(tǒng)間的轉(zhuǎn)換,使程序員能夠隨心所欲地選擇自己喜歡的語言(當(dāng)然,這種語言必須支持.NET應(yīng)用)從事開發(fā),保證了不同語言間的集成。對于過程性語言,它描述了值的類型并指定了類型的所有值必須遵守的規(guī)VOS則。在面向?qū)ο蟮恼Z言方面它統(tǒng)一了不同編程語言的對象模型。每一個對象在中都被唯一標(biāo)識以與其它對象相區(qū)別。元數(shù)據(jù)元數(shù)據(jù)是類型庫、注冊表及其它一些中間語言代碼運行所需信息。中間語言和
8、元數(shù)據(jù)共同包含在C#可執(zhí)行文件或.dll文件中。元數(shù)據(jù)與使用的語言無關(guān),換句話講,不同語言產(chǎn)生的元數(shù)據(jù)相同。 通用語言規(guī)范(CLS)通用語言規(guī)范(CommonLanguageSpecificationCLS)是VOS系統(tǒng)中定義的語言特性,所有VOS中的語言都必須遵從通用語言規(guī)范,以使不同語言所編譯的對象能夠相互理解。一種語言,如遵守通用語言規(guī)范,它建立的類庫可以被其它語言使用。 虛擬執(zhí)行系統(tǒng)(VESVisualExecutionSystem)虛擬執(zhí)行系統(tǒng)主要完成以下功能:(1) 裝入中間代碼。(2) 使用JIT將中間代碼轉(zhuǎn)換為本地機器碼。(3) 裝入元數(shù)據(jù)。(4) 代碼管理服務(wù)包括垃圾收集器和
9、異常處理。(5) 定制與調(diào)試服務(wù)。(6) 線程和環(huán)境管理.Net框架的優(yōu)點:可以使用任何編程語言,減少編寫代碼量,以XML/SOA為核心,提高了應(yīng)用程序的可靠性,性能更加優(yōu)化。.Net通過將各種語言先編譯成中間語言(IL),然后再執(zhí)行即時(JustInTime,JIT)編譯器將其編譯成本地代碼來實現(xiàn)異構(gòu)平臺下對象的互操作。.Net通過CLR來實現(xiàn)資源對象和類型的安全。.Net通過HTTPXMLSOAPWSD等Internet標(biāo)準(zhǔn)的支持提供在異構(gòu)網(wǎng)絡(luò)環(huán)境下獲取遠(yuǎn)程服務(wù)、連接遠(yuǎn)程設(shè)備和交互遠(yuǎn)程應(yīng)用的編程界面。.Net的受管代碼是指符合CLR進(jìn)行規(guī)范,在內(nèi)存中受運行時代碼代理進(jìn)行內(nèi)存管理、線程管理、
10、遠(yuǎn)程管理、代碼強制安全類型的代碼。非受管代碼指對內(nèi)存、文件、數(shù)據(jù)庫等非受管資源進(jìn)行操作的代碼,通常不受運行時代碼代理管理,是不安全的。C#的弱點:CLS包括MSIL的共享語言基礎(chǔ),只讓RAD開發(fā)者受益,而損害了硬件的核心開發(fā)者。usingSystem;classWelcome/*解釋開始解釋結(jié)束*/staticvoidMain()/解釋Console.WriteLine("Pleaseenteryourname:");Console.ReadLine();Console.WriteLine("Welcometoyou!");您可以在任意一種編輯軟件中完成
11、上述代碼的編寫,然后把文件存盤,假設(shè)文件名叫做Welcome.cs,典型的C#源文件通常都是以.cs作為文件的擴(kuò)展名。例如存到D:asp文件夾中。和C+語言相同,C#語言是大小寫敏感的。高級語言總是依賴于許多在程序外部預(yù)定義的變量和函數(shù)。在C或C+中這些定義一般放到頭文件中,用#inelude語句來導(dǎo)入這個頭文件。而在C#語言中使用usingSystem表示導(dǎo)入名字空間,C#中的usingSystem語句的用途與C+中#include語句的用途基本類似,用于導(dǎo)入預(yù)定義的變量和函數(shù),這樣在自己的程序中就可以自由地使用這些變量和函數(shù)。如果沒有導(dǎo)入名字空間的話我們該怎么辦呢?程序還能保持正確嗎?答案
12、是肯定的,那樣的話我們就必須把代碼改寫成下面的樣子:classWelcomestaticvoidMain()System.Console.WriteLine("Pleaseenteryourname:");System.Console.ReadLine();System.Console.WriteLine("Welcometoyou!");C#中拋棄了C和C+沖繁雜且極易出錯的操作符像:和->等,C#中的復(fù)合名字一律通過來連接。System是.Net平臺框架提供的最基本的名字空間之一,C#程序中每個變量或函數(shù)都必須屬于一個類,不能象C或C+那樣建立
13、全局變量。主函數(shù)Main()也必須在一個類中。程序所完成的輸入輸出功能是通過Console來完成的,Console是在名字空間中System中已經(jīng)定義好的一個類。類Console有兩個最基本的方法WriteLine和ReadLine。ReadLine表示接受輸入設(shè)備輸入,WriteLine則用于在輸出設(shè)備上輸出。如果您不具備這個條件,那么至少需要安裝Microsoft.NetFrameworkSDK這樣才能夠運行C#語言程序。實際上.Net平臺內(nèi)置了C#勺編譯器,下面讓我們使用這個微軟提供的命令行編譯器對我們的程序進(jìn)行編譯。3.2 C#的變量和類型C#語言把變量分為數(shù)值類型和引用類型。3.2.1數(shù)值類型C#語言中數(shù)值類型可以分為以下幾種: 簡單類型(Simpletypes) 結(jié)構(gòu)類型(Structtypes)枚舉類型(Enumerationtypes)1結(jié)構(gòu)類型結(jié)構(gòu)類型和類一樣,可以聲明構(gòu)造函數(shù)、數(shù)據(jù)成員、方法、屬性等,和類的最根本的區(qū)別是結(jié)構(gòu)類型是數(shù)值類型,類是引用類型。結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《高原疾病防治知識》課件
- 2025年分期付款化妝品購買合同
- 2025年P(guān)PP項目合作物資保障協(xié)議
- 二零二五年海洋工程建設(shè)項目施工合同6篇
- 二零二五年度PVC管材綠色制造技術(shù)合作合同3篇
- 2025年度新能源發(fā)電項目租賃合同3篇
- 2025版學(xué)校圖書館古籍保護(hù)與展示工程合同3篇
- 二零二五年度航空航天器研發(fā)與測試合同4篇
- 2025年度住宅小區(qū)物業(yè)管理權(quán)轉(zhuǎn)讓與社區(qū)安全防范協(xié)議
- 二零二五年度文化創(chuàng)意產(chǎn)業(yè)經(jīng)營授權(quán)協(xié)議
- 國家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢病種診療方案和臨床路徑目錄
- 2024年全國甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級上冊小學(xué)生口算天天練
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 三年級數(shù)學(xué)添括號去括號加減簡便計算練習(xí)400道及答案
- 蘇教版五年級上冊數(shù)學(xué)簡便計算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計算機江蘇對口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
評論
0/150
提交評論