1. 為什么要寫(xiě)本書(shū)
C#(C Sharp)是微軟公司在2000年6月發(fā)布的一種全新的編程語(yǔ)言,是為.NET Framework量身定做的程序語(yǔ)言。C#擁有C/C++的強(qiáng)大功能以及Visual Basic簡(jiǎn)易使用的特性,是一個(gè)基于組件導(dǎo)向(Componentoriented)和對(duì)象導(dǎo)向(Objectoriented)的高級(jí)程序語(yǔ)言,包括諸如單一繼承、界面處理、編譯生成中間代碼再運(yùn)行的過(guò)程; 是微軟公司.NET Windows網(wǎng)絡(luò)框架的主角,程序員可以快速地編寫(xiě)各種基于Microsoft .NET平臺(tái)的應(yīng)用程序。
作者從事計(jì)算機(jī)專(zhuān)業(yè)教學(xué)工作10余年,從事C#程序設(shè)計(jì)10余年,參與和組織實(shí)施了十幾項(xiàng)C#程序的設(shè)計(jì)和開(kāi)發(fā)。市場(chǎng)上關(guān)于C#學(xué)習(xí)的書(shū)籍很多,但相當(dāng)一部分對(duì)于學(xué)校的教學(xué)開(kāi)展不對(duì)位。作者在充分調(diào)研當(dāng)前高校C#教學(xué)效果和軟件公司需求差異的基礎(chǔ)之上,總結(jié)自己的教學(xué)實(shí)踐和應(yīng)用實(shí)踐,精心編寫(xiě)了此書(shū),此書(shū)已在本校范圍內(nèi)使用了3屆,期間多次改版易稿,完善紕漏瑕疵,力求與時(shí)俱進(jìn)。本書(shū)內(nèi)容既能滿足當(dāng)前教學(xué)需要,激發(fā)學(xué)生興趣,也能對(duì)學(xué)生日后走上C#相關(guān)崗位,滿足社會(huì)需要奠定基礎(chǔ)。
2. 平臺(tái)說(shuō)明
本書(shū)中的解決方案和上機(jī)練習(xí)項(xiàng)目都是在Visual Studio .NET 2013環(huán)境下編碼運(yùn)行的,VS 2013自帶的.NET Framework 4.5和其他版本之間存在一些差異,所以由于運(yùn)行平臺(tái)版本不同,可能會(huì)出現(xiàn)編譯錯(cuò)誤,可自行根據(jù)提示調(diào)試解決,也可直接升級(jí)到.NET Framework 4.5。
3. 運(yùn)行機(jī)制
C#所開(kāi)發(fā)的程序源代碼并不是編譯成能夠直接在操作系統(tǒng)上執(zhí)行的二進(jìn)制本地代碼。與Java類(lèi)似,它被編譯成為中間代碼,然后通過(guò).NET Framework的虛擬機(jī)(被稱(chēng)為通用語(yǔ)言運(yùn)行時(shí),CLR)執(zhí)行。所有的C#編程語(yǔ)言都被編譯成這種被稱(chēng)為MSIL(Microsoft Intermediate Language)的中間代碼,因此雖然最終的程序在表面上仍然與傳統(tǒng)意義上的可執(zhí)行文件都具有“.exe”的后綴名,但是實(shí)際上,如果計(jì)算機(jī)上沒(méi)有安裝.NET Framework,那么這些程序?qū)⒉荒軌虮粓?zhí)行。在程序執(zhí)行時(shí),.NET Framework將中間代碼翻譯成二進(jìn)制機(jī)器碼,從而使它得到正確的運(yùn)行。最終的二進(jìn)制代碼被存儲(chǔ)在一個(gè)緩沖區(qū)中,所以一旦程序使用了相同的代碼,那么將會(huì)調(diào)用緩沖區(qū)中的版本。因此如果一個(gè).NET程序啟動(dòng)后關(guān)閉前第二次被運(yùn)行,那么這種翻譯不需要進(jìn)行第二次,速度明顯加快。
4. 內(nèi)容特色
程序開(kāi)發(fā)的實(shí)質(zhì)是利用計(jì)算機(jī)高級(jí)語(yǔ)言對(duì)數(shù)據(jù)集進(jìn)行的封裝性讀寫(xiě),本書(shū)切實(shí)遵循這一重要實(shí)質(zhì),從內(nèi)容和過(guò)程上保證了程序開(kāi)發(fā)的完整性。首先講解了C#語(yǔ)言的語(yǔ)法基礎(chǔ),這是了解語(yǔ)言和使用語(yǔ)言的第一步; 然后分析了C#語(yǔ)言的編程過(guò)程和編程過(guò)程中使用的相關(guān)調(diào)試方式和工具,幫助引導(dǎo)學(xué)習(xí)者嘗試完成各種基本操作,并在理論講解的同時(shí)給出了大量的可行實(shí)例,有利于提高學(xué)習(xí)效率和掌握程度; 最后通過(guò)實(shí)例講解C#語(yǔ)言操作各種數(shù)據(jù)集的方法和過(guò)程,闡述程序開(kāi)發(fā)的精髓和知識(shí)儲(chǔ)備體系。
為了方便讀者學(xué)習(xí)和教學(xué)人員的工作,本書(shū)的所有源碼和課件可以從網(wǎng)上直接下載。
5. 結(jié)構(gòu)安排
本書(shū)根據(jù)C#程序設(shè)計(jì)學(xué)習(xí)的內(nèi)容和技術(shù)特點(diǎn),分為三部分,共19章,從C#的語(yǔ)言基礎(chǔ)、編程實(shí)踐、具體應(yīng)用進(jìn)行了講解。
第1部分C#基礎(chǔ)包含6章,主要介紹C#的運(yùn)行平臺(tái).NET Framework,常用的預(yù)定義數(shù)據(jù)類(lèi)型、面向?qū)ο蟮暮诵念?lèi)與對(duì)象,以及類(lèi)的繼承、多態(tài)等特性,同時(shí)也就事件的觸發(fā)、綁定和執(zhí)行過(guò)程進(jìn)行了闡述。
第2部分C#編程包含8章,從多個(gè)角度分析C#的編程過(guò)程,講述程序的三大組成結(jié)構(gòu)、正則表達(dá)式和泛型在程序中的使用、LINQ查詢(xún)對(duì)內(nèi)存數(shù)據(jù)的操作,以及編程過(guò)程中排除故障的異常處理機(jī)制、程序診斷和調(diào)試工具等知識(shí)。
第3部分C#應(yīng)用包含5章,針對(duì)C#在程序開(kāi)發(fā)中的具體應(yīng)用展開(kāi),介紹C#訪問(wèn)文件、XML、數(shù)據(jù)庫(kù)的方法和過(guò)程,并通過(guò)兩個(gè)C#應(yīng)用實(shí)例為后續(xù)學(xué)習(xí)做了鋪墊。
6. 讀者對(duì)象
高校計(jì)算機(jī)專(zhuān)業(yè)學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的學(xué)生; 愛(ài)好C#的程序設(shè)計(jì)人員。
7. 致謝
感謝門(mén)玉梅和張雪梅兩位主任對(duì)本書(shū)的支持,感謝她們給本書(shū)提供的建設(shè)性意見(jiàn)。
限于編者的水平和經(jīng)驗(yàn),加之時(shí)間比較倉(cāng)促,疏漏或者錯(cuò)誤之處在所難免,敬請(qǐng)讀者批評(píng)指正。
編者
2015年1月于石家莊
第1部分C#基礎(chǔ)
第1章.NET Framework和C#語(yǔ)言
1.1.NET Framework
1.1.1公共語(yǔ)言運(yùn)行時(shí)
1.1.2Framework類(lèi)庫(kù)
1.1.3并行計(jì)算平臺(tái)
1.1.4動(dòng)態(tài)語(yǔ)言運(yùn)行時(shí)
1.2Visual Studio開(kāi)發(fā)環(huán)境
1.3編寫(xiě)第一個(gè)程序
1.4C#程序的組成結(jié)構(gòu)和類(lèi)結(jié)構(gòu)
小結(jié)
作業(yè)題
上機(jī)練習(xí)
第2章理解C#類(lèi)型
2.1C#類(lèi)型
2.2預(yù)定義類(lèi)型
2.2.1常用的值類(lèi)型
2.2.2字符串類(lèi)型
2.2.3空字符串
2.2.4字符串操作
2.2.5使用StringBuilder創(chuàng)建可變的字符串
2.3類(lèi)型格式化
2.3.1標(biāo)準(zhǔn)格式字符串
2.3.2自定義格式字符串
2.3.3復(fù)合格式化
2.4C#語(yǔ)言中的數(shù)據(jù)
2.5默認(rèn)值
2.6null和可以為null的類(lèi)型
2.7類(lèi)型強(qiáng)制轉(zhuǎn)換
2.8運(yùn)算符
2.8.1算術(shù)運(yùn)算符和賦值運(yùn)算符
2.8.2關(guān)系運(yùn)算符
2.8.3邏輯運(yùn)算符
2.8.4條件運(yùn)算符
小結(jié)
作業(yè)
上機(jī)練習(xí)
第3章C#類(lèi)和對(duì)象
3.1面向?qū)ο缶幊?br />
3.2面向組件編程
3.3C#類(lèi)
3.4作用域和聲明空間
3.4.1訪問(wèn)性
3.4.2字段和常量
3.4.3屬性
3.4.4方法
3.4.5實(shí)例化類(lèi)
3.5嵌套類(lèi)
3.6分部類(lèi)
3.7靜態(tài)類(lèi)
3.8對(duì)象初始值設(shè)定項(xiàng)
小結(jié)
作業(yè)
上機(jī)練習(xí)
第4章繼承、多態(tài)、接口和抽象類(lèi)
4.1繼承和多態(tài)
4.1.1類(lèi)的多態(tài)性
4.1.2處理繼承而來(lái)的成員
4.2抽象類(lèi)和抽象成員
4.3接口
小結(jié)
作業(yè)
上機(jī)練習(xí)
第5章枚舉類(lèi)型和結(jié)構(gòu)
5.1枚舉類(lèi)型
5.1.1普通枚舉
5.1.2位標(biāo)志枚舉
5.2結(jié)構(gòu)
5.2.1方法
5.2.2構(gòu)造和初始化
小結(jié)
作業(yè)
上機(jī)練習(xí)
第6章事件及其處理
6.1理解事件
6.2訂閱和取消訂閱
6.3匿名方法的展開(kāi)討論
6.4引發(fā)事件
小結(jié)
作業(yè)
上機(jī)練習(xí)
第2部分C#編程
第7章程序控制流程
7.1選擇語(yǔ)句
7.1.1if語(yǔ)句
7.1.2switch語(yǔ)句
7.2迭代語(yǔ)句
7.2.1while語(yǔ)句
7.2.2do…while語(yǔ)句
7.2.3for語(yǔ)句
7.2.4foreach語(yǔ)句
7.3跳轉(zhuǎn)語(yǔ)句
7.3.1break語(yǔ)句
7.3.2continue語(yǔ)句
7.3.3return語(yǔ)句
小結(jié)
作業(yè)
上機(jī)練習(xí)
第8章正則表達(dá)式
8.1正則表達(dá)式概述
8.2C#中的正則表達(dá)式
8.2.1使用正則表達(dá)式驗(yàn)證字符串
8.2.2使用正則表達(dá)式搜索字符串
小結(jié)
作業(yè)
上機(jī)練習(xí)
第9章數(shù)組和集合
9.1數(shù)組
9.1.1數(shù)組索引
9.1.2數(shù)組初始化
9.1.3System.Array類(lèi)
9.2索引器
9.3泛型集合
9.3.1列表
9.3.2Collection <T>
9.3.3字典
9.3.4集
9.3.5堆棧和隊(duì)列
9.4集合初始值設(shè)定項(xiàng)
小結(jié)
作業(yè)
上機(jī)練習(xí)
第10章異常處理錯(cuò)誤
10.1理解異常
10.2引發(fā)異常
10.3處理異常
10.4重新引發(fā)捕獲的異常
10.5溢出和整型算術(shù)運(yùn)算
小結(jié)
作業(yè)
上機(jī)練習(xí)
第11章泛型的使用
11.1為何使用泛型
11.1.1理解泛型類(lèi)型參數(shù)
11.1.2泛型類(lèi)型的默認(rèn)值
11.2使用泛型方法
11.3創(chuàng)建泛型類(lèi)
11.4結(jié)合使用泛型和數(shù)組
11.5得到泛型類(lèi)型的類(lèi)型
小結(jié)
作業(yè)
上機(jī)練習(xí)
第12章LINQ查詢(xún)表達(dá)式
12.1LINQ簡(jiǎn)介
12.1.1選擇數(shù)據(jù)
12.1.2對(duì)數(shù)據(jù)進(jìn)行分組和排序
12.1.3連接數(shù)據(jù)
12.2標(biāo)準(zhǔn)查詢(xún)運(yùn)算方法
12.3Lambda
12.4延遲執(zhí)行
小結(jié)
作業(yè)
上機(jī)練習(xí)
第13章程序診斷處理
13.1有條件地編譯代碼塊
13.2確定一個(gè)進(jìn)程是否停止響應(yīng)
13.3捕獲進(jìn)程的標(biāo)準(zhǔn)輸出
13.4查看運(yùn)行環(huán)境
小結(jié)
作業(yè)
上機(jī)練習(xí)
第14章在Visual Studio環(huán)境中調(diào)試程序
14.1注釋代碼
14.2編譯錯(cuò)誤和運(yùn)行錯(cuò)誤
14.3在Visual Studio中調(diào)試程序
14.3.1變量窗口
14.3.2使用數(shù)據(jù)提示
14.3.3使用即時(shí)窗口
14.3.4理解斷點(diǎn)
14.3.5控制程序執(zhí)行
14.4可視化數(shù)據(jù)
小結(jié)
作業(yè)
上機(jī)練習(xí)
第3部分C#應(yīng)用
第15章使用文件和流
15.1文件和目錄
15.1.1使用路徑
15.1.2特殊目錄
15.1.3DirectoryInfo類(lèi)和FileInfo類(lèi)
15.1.4Directory類(lèi)和File類(lèi)
15.2讀寫(xiě)數(shù)據(jù)
15.2.1二進(jìn)制文件
15.2.2緩沖流
15.2.3文本文件
15.2.4使用File類(lèi)讀寫(xiě)數(shù)據(jù)
小結(jié)
作業(yè)
上機(jī)練習(xí)
第16章使用XML
16.1理解XML DOM
16.2使用LINQ to XML
16.2.1XDocument類(lèi)
16.2.2XElement類(lèi)和XAttribute類(lèi)
16.2.3XName和XNamespace
16.3選擇和查詢(xún)XML
16.4修改XML
小結(jié)
作業(yè)
上機(jī)練習(xí)
第17章使用數(shù)據(jù)庫(kù)
17.1先決條件
17.2理解ADO.NET
17.3理解LINQ to ADO.NET
17.3.1LINQ to DataSet
17.3.2LINQ to SQL
17.4關(guān)于DataTable的常用操作
小結(jié)
作業(yè)
上機(jī)練習(xí)
第18章Windows Form應(yīng)用程序
18.1創(chuàng)建Windows Form程序
18.2Windows Form的工具箱
18.3計(jì)算器的實(shí)現(xiàn)過(guò)程
18.3.1窗體布局
18.3.2為按鈕添加事件
小結(jié)
作業(yè)
上機(jī)練習(xí)
第19章Web應(yīng)用程序
19.1ASP.NET概述并創(chuàng)建第一個(gè)ASP.NET應(yīng)用程序
19.2ASP.NET應(yīng)用程序相關(guān)的知識(shí)
19.2.1控件與工具箱
19.2.2Web.config
19.2.3IIS服務(wù)器
19.3留言板的實(shí)現(xiàn)過(guò)程
19.3.1數(shù)據(jù)庫(kù)設(shè)計(jì)
19.3.2Web.config配置
19.3.3系統(tǒng)文件結(jié)構(gòu)
19.3.4項(xiàng)目實(shí)現(xiàn)
小結(jié)
作業(yè)
上機(jī)練習(xí)
編后語(yǔ)
參考文獻(xiàn)