本書以Visual Studio 2013為平臺(tái),講述了關(guān)于C#的編程知識(shí)。全書共分為14章,其中第1~10章主要講述控制臺(tái)下的C#,講述的重點(diǎn)為面向?qū)ο蟮木幊趟枷耄坏?1~13章講述Windows窗體程序的設(shè)計(jì),介紹常用的控件、GDI+以及文件讀寫等方面的知識(shí);最后一章簡(jiǎn)單講述常用的數(shù)據(jù)結(jié)構(gòu),如線性表和棧等。
本書從基礎(chǔ)講起,是C#的入門書籍,可作為高等學(xué)校程序設(shè)計(jì)課程的教材,也可供C#程序設(shè)計(jì)愛(ài)好者自學(xué)使用。
本書以Visual Studio 2013為平臺(tái),講述關(guān)于C#的編程知識(shí)。全書共分為14章,其中第1~10章主要講述控制臺(tái)下的C#,講述的重點(diǎn)為面向?qū)ο蟮木幊趟枷耄坏?1~13章講述Windows窗體程序的設(shè)計(jì),介紹常用的控件、GDI+以及文件讀寫等方面的知識(shí);最后一章簡(jiǎn)單講述常用的數(shù)據(jù)結(jié)構(gòu),如線性表和棧等。
完成本書的講授需要48課時(shí)(24課時(shí)授課+24課時(shí)上機(jī))至72課時(shí)(36課時(shí)授課+36課時(shí)上機(jī))。本書只需要學(xué)生具備基本的計(jì)算機(jī)基礎(chǔ)知識(shí)。在已經(jīng)學(xué)習(xí)過(guò)一門語(yǔ)言的情況下,講授第1、2、4章的內(nèi)容時(shí)需注意C#和其他語(yǔ)言的區(qū)別。由于C#是純面向?qū)ο蟮恼Z(yǔ)言,所以本書第3章簡(jiǎn)單介紹了面向?qū)ο蟮闹R(shí),使學(xué)生對(duì)程序的總體架構(gòu)有一個(gè)認(rèn)識(shí)。
第5章和第6章講述數(shù)組和方法。第7章到第9章討論了面向?qū)ο蟮?個(gè)關(guān)鍵的特性:封裝、繼承和多態(tài)。接口不是本書的重點(diǎn)內(nèi)容,講述較為簡(jiǎn)略。第10章討論了C#的異常處理機(jī)制。
第11章到第13章講述Windows的窗體編程。對(duì)于控件或組件,建議重點(diǎn)講述三四個(gè)控件,其余的可以安排學(xué)生自學(xué)。
第14章簡(jiǎn)單講述常用的數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)如線性表、棧和隊(duì)列等在C#中均有對(duì)應(yīng)的類。在了解數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,應(yīng)該盡量使用這里已有的類來(lái)完成任務(wù)。第14章的內(nèi)容可以安排在最后講述,也可以在第10章后直接講述。
本書所有代碼在Windows 7以及Visual Studio 2013 Team下調(diào)試通過(guò)。本書對(duì)版本沒(méi)有特殊要求,使用Visual Studio Express可以完全勝任本書的學(xué)習(xí)。
參加本書編寫的人員有崔舒寧(第1、2、11~14章)、楊琦(第3、4章)、楊振平(第5、6、8章)、賈應(yīng)智(第7、9、10章)。全書由崔舒寧統(tǒng)稿。本書講義經(jīng)過(guò)在西安交通大學(xué)部分班級(jí)試用,學(xué)生反映良好。由于本書涉及面較廣,時(shí)間倉(cāng)促,加之作者水平有限,書中錯(cuò)誤和疏漏之處在所難免,懇望各位讀者不吝指正。聯(lián)系郵箱:cuishuning@gmail.com。
崔舒寧
1.1C#概述1
1.2.NET框架和公共語(yǔ)言運(yùn)行時(shí)1
1.2.1.NET框架1
1.2.2CLR與CLI2
1.2.3C#的執(zhí)行過(guò)程2
1.2.4垃圾回收4
1.3面向?qū)ο蟮木幊碳夹g(shù)4
1.3.1類和對(duì)象4
1.3.2字段5
1.3.3方法6
1.3.4注釋6
1.4使用Vsiual Studio7
1.5名字空間10
1.6解決方案和項(xiàng)目10
1.7控制臺(tái)的輸入與輸出11
1.7.1控制臺(tái)的輸出11
1.7.2控制臺(tái)的輸入13
習(xí)題15
第2章數(shù)據(jù)類型與表達(dá)式16
2.1.NET數(shù)據(jù)類型16
2.1.1值類型16
2.1.2引用類型16
2.2C#的數(shù)據(jù)類型17
2.2.1簡(jiǎn)單類型18
2.2.2枚舉18
2.2.3結(jié)構(gòu)20
2.2.4拆箱與裝箱212.2.5常量21
2.2.6字符和字符串22
2.2.7隱式類型23
2.3表達(dá)式23
2.3.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式24
2.3.2關(guān)系運(yùn)算符和關(guān)系表達(dá)式24
2.3.3邏輯運(yùn)算符和邏輯表達(dá)式24
2.3.4賦值運(yùn)算符和賦值表達(dá)式25
2.3.5自增運(yùn)算符和自減運(yùn)算符25
2.3.6問(wèn)號(hào)表達(dá)式26
2.3.7位運(yùn)算符26
2.3.8表達(dá)式中各運(yùn)算符的運(yùn)算順序28
2.4常用數(shù)學(xué)函數(shù)29
2.5例題30
習(xí)題35
第3章面向?qū)ο蟮木幊?36
3.1面向?qū)ο缶幊?6
3.2類的概念37
3.2.1類的聲明37
3.2.2類成員的聲明39
3.2.3類的字段40
3.2.4創(chuàng)建類的實(shí)例41
3.2.5類的方法42
3.2.6類的構(gòu)造方法44
3.3類的屬性46
3.4自實(shí)現(xiàn)屬性49
3.5值類型和引用類型50
3.6靜態(tài)字段和實(shí)例字段51
習(xí)題53
第4章控制語(yǔ)句54
4.1程序的基本控制結(jié)構(gòu)54
4.2控制語(yǔ)句56
4.3選擇語(yǔ)句56
4.3.1if語(yǔ)句56
4.3.2if…else語(yǔ)句57
4.3.3switch語(yǔ)句58
4.4循環(huán)語(yǔ)句61
4.4.1while語(yǔ)句61
4.4.2do…while語(yǔ)句62
4.4.3for語(yǔ)句63
4.4.4循環(huán)的嵌套64
4.5跳轉(zhuǎn)語(yǔ)句65
4.5.1break語(yǔ)句65
4.5.2continue語(yǔ)句66
4.5.3goto語(yǔ)句和語(yǔ)句標(biāo)號(hào)68
4.6其他語(yǔ)句69
4.7程序設(shè)計(jì)實(shí)例69
習(xí)題71
第5章數(shù)組73
5.1數(shù)組概述73
5.1.1聲明和創(chuàng)建一維數(shù)組73
5.1.2數(shù)組元素的訪問(wèn)74
5.1.3數(shù)組使用舉例75
5.1.4案例研究: 洗牌與發(fā)牌模擬77
5.2foreach語(yǔ)句81
5.3數(shù)組的參數(shù)傳遞82
5.3.1將數(shù)組和數(shù)組元素傳入方法82
5.3.2案例研究: GradeBook類用數(shù)組保存成績(jī)85
5.4多維數(shù)組89
5.4.1多維數(shù)組的使用89
5.4.2案例研究: 使用矩形數(shù)組的GradeBook94
5.5變長(zhǎng)實(shí)參表98
5.6使用命令行實(shí)參99
習(xí)題101
第6章方法103
6.1C#的代碼包裝103
6.2靜態(tài)方法和靜態(tài)變量103
6.3關(guān)于方法聲明與使用105
6.3.1方法參數(shù)修飾符108
6.3.2參數(shù)傳遞的隱式轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換111
6.3.3方法重載112
6.3.4可選參數(shù)和命名參數(shù)113
6.3.5按值傳遞與按引用傳遞115
6.4.NET框架類庫(kù)124
6.5聲明的作用域125
6.6遞歸127
習(xí)題130
第7章面向?qū)ο蟮木幊?133
7.1Time類案例研究133
7.2控制對(duì)成員的訪問(wèn)135
7.3用this引用訪問(wèn)當(dāng)前對(duì)象的成員136
7.4構(gòu)造函數(shù)與析構(gòu)函數(shù)138
7.4.1重載構(gòu)造函數(shù)138
7.4.2默認(rèn)構(gòu)造函數(shù)141
7.4.3內(nèi)存回收與析構(gòu)函數(shù)141
7.4.4對(duì)象初始化器143
7.5合成145
7.6readonly實(shí)例變量149
7.7數(shù)據(jù)抽象與封裝151
7.8Class View與Object Browser152
習(xí)題153
第8章繼承155
8.1基類與派生類155
8.1.1protected成員155
8.1.2基類與派生類的關(guān)系155
8.2派生類的構(gòu)造函數(shù)161
8.3object類167
習(xí)題169
第9章多態(tài)、接口和運(yùn)算符重載171
9.1多態(tài)171
9.1.1多態(tài)舉例171
9.1.2演示多態(tài)行為172
9.1.3抽象類和方法175
9.1.4案例研究:使用多態(tài)的工資系統(tǒng)179
9.2sealed方法和類189
9.3創(chuàng)建和使用接口191
9.4運(yùn)算符重載196
習(xí)題202
第10章異常處理203
10.1異常處理的例子203
10.2.NET的Exception層次207
10.3finally語(yǔ)句塊209
10.4using語(yǔ)句212
10.5throw語(yǔ)句與拋出異常212
10.6Exception類的常用屬性214
10.7用戶定義異常類214
習(xí)題216
第11章圖形界面編程218
11.1Windows編程概述218
11.1.1窗體219
11.1.2事件處理219
11.2常用控件1221
11.2.1控件的屬性和布局221
11.2.2卷標(biāo)、文本框和按鈕222
11.2.3組框、面板、復(fù)選框和單選鈕224
11.2.4圖片框230
11.2.5工具提示233
11.2.6數(shù)字調(diào)節(jié)控件234
11.2.7Timer組件236
11.3鼠標(biāo)事件處理237
11.4鍵盤事件處理240
11.5常用控件2243
11.5.1MonthCalendar和DateTimePicker 控件243
11.5.2ListBox、CheckedListBox和ComboBox244
11.5.3TreeView和ListView249
11.5.4TabControl 控件253
11.6可視化繼承254
11.7用戶定義的控件256
習(xí)題257
第12章GDI+、菜單、窗體和對(duì)話框258
12.1繪圖基礎(chǔ)知識(shí)258
12.1.1坐標(biāo)系258
12.1.2GDI+繪圖258
12.2在窗體上繪圖259
12.2.1畫筆和顏色259
12.2.2畫刷261
12.2.3文字屬性262
12.2.4繪圖262
12.3在控件上繪圖264
12.4菜單266
12.4.1菜單的基本概念266
12.4.2設(shè)計(jì)并使用菜單266
12.4.3設(shè)計(jì)上下文菜單269
12.5窗體270
12.5.1在項(xiàng)目中加入新的窗體271
12.5.2窗體的顯示和隱藏271
12.5.3標(biāo)準(zhǔn)對(duì)話框271
12.5.4消息對(duì)話框272
12.5.5多文檔程序277
習(xí)題280
第13章文件和流281
13.1文件和流的基本概念281
13.1.1文件的概念281
13.1.2流的概念281
13.2文本文件的讀寫282
13.2.1StreamWriter282
13.2.2StreamReader282
13.3二進(jìn)制文件的讀寫285
13.3.1FileStream285
13.3.2BinaryWriter和BinaryReader286
13.3.3序列化290
13.4目錄和文件操作293
13.4.1目錄操作293
13.4.2文件操作296
習(xí)題298
第14章數(shù)據(jù)結(jié)構(gòu)299
14.1數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)299
14.1.1數(shù)據(jù)299
14.1.2數(shù)據(jù)結(jié)構(gòu)300
14.2線性表302
14.2.1線性表的邏輯結(jié)構(gòu)及運(yùn)算302
14.2.2線性表的存儲(chǔ)結(jié)構(gòu)303
14.2.3List類309
14.2.4LinkedList類311
14.3棧和隊(duì)列313
14.3.1棧313
14.3.2Stack類316
14.3.3隊(duì)列318
14.3.4Queue類323
14.4圖和樹(shù)325
14.4.1圖的基本概念325
14.4.2帶權(quán)圖和最短路徑327
14.4.3樹(shù)的基本概念329
14.4.4二叉樹(shù)330
14.4.5樹(shù)的遍歷331
習(xí)題331
參考文獻(xiàn)332