第1章 你真的瞭解C#嗎 1
1.1 什麼是C# 1
1.1.1 C#語言的發展曆程 1
1.1.2 C#能編寫哪些應用程序 3
1.2 什麼是.NET Framework 5
1.2.1 .NET Framework的組成 5
1.2.2 C#與.NET Framework的關係 7
1.2.3 C#代碼的執行過程 8
1.3 歸納總結 9
第2章 來點C#的感覺 10
2.1 開發環境的搭建 10
2.2 創建“歡迎你”應用程序 13
2.2.1 創建控製颱項目 13
2.2.2 編譯和運行程序 15
2.2.3 對程序進行調試 18
2.3 歸納總結 19
第3章 打開C#的大門——C#語言基礎 20
3.1 標識符和關鍵字 20
3.1.1 標識符 20
3.1.2 關鍵字 21
3.2 基礎數據類型 22
3.2.1 數值類型 22
3.2.2 字符串類型 23
3.2.3 枚舉類型 24
3.2.4 結構體類型 25
3.2.5 數組類型 25
3.3 變量和常量 26
3.3.1 變量的使用 27
3.3.2 變量的作用域 27
3.3.3 常量 27
3.4 運算符和錶達式 28
3.4.1 運算符 28
3.4.2 運算符優先級 28
3.4.3 運算符重載 29
3.4.4 錶達式 31
3.5 C#中的語句 31
3.5.1 條件語句 31
3.5.2 循環語句 34
3.5.3 跳轉語句 37
3.6 歸納總結 39
第4章 C#中的類 40
4.1 什麼是類 40
4.2 C#中如何定義一個類 40
4.3 類的成員 41
4.3.1 字段 41
4.3.2 屬性 42
4.3.3 方法 45
4.3.4 構造函數 48
4.3.5 析構函數 52
4.3.6 索引器 52
4.4 類實例化 54
4.5 類與結構體的區彆 55
4.6 歸納總結 57
第5章 首先需要明確的——C#中的麵嚮對象編程 58
5.1 封裝 58
5.2 繼承 59
5.2.1 C#中的繼承 60
5.2.2 密封類 61
5.2.3 子類的初始化順序 61
5.3 多態 62
5.3.1 使用virtual和override關鍵字實現方法重寫 63
5.3.2 阻止派生類重寫虛成員 65
5.3.3 使用新成員隱藏基類成員 65
5.4 所有類的父類:System.object 67
5.5 歸納總結 67
第6章 電腦有USB接口,C#也有接口 68
6.1 什麼是接口 68
6.2 如何使用接口來編程 68
6.2.1 接口的定義 68
6.2.2 繼承接口 70
6.2.3 調用接口中的方法 71
6.3 顯式接口實現方式 72
6.4 接口與抽象類 76
6.5 麵嚮對象編程的應用 76
6.6 歸納總結 79
第7章 透過外錶看本質——IL 語言 80
7.1 什麼是IL 80
7.2 先睹為快——從“Hello World”看IL 80
7.2.1 工具的介紹 80
7.2.2 使用工具查看IL代碼 80
7.3 教你看懂IL代碼 85
7.3.1 IL基本類型 85
7.3.2 變量的聲明 86
7.3.3 基本運算 86
7.3.4 IL中的流程控製 87
7.4 歸納總結 88
第8章 正式進入C#的世界——委托 89
8.1 C#委托是什麼 89
8.2 委托的使用 90
8.3 為什麼要引入委托 91
8.4 委托的本質 93
8.5 委托鏈 96
8.5.1 委托鏈的使用 96
8.5.2 從委托鏈中移除委托 97
8.6 歸納總結 98
第9章 事件揭秘 99
9.1 什麼是事件 99
9.2 使用事件 99
9.2.1 如何定義事件 99
9.2.2 訂閱和取消事件 100
9.2.3 擴展EventArgs類 104
9.3 事件的本質 106
9.4 歸納總結 108
第10章 深入理解類型 109
10.1 C#中的類型——值類型和引用類型 109
10.1.1 什麼是值類型和引用類型 109
10.1.2 值類型與引用類型的區彆 110
10.1.3 兩大類型間的轉換——裝箱與拆箱 113
10.2 參數傳遞問題剖析 116
10.2.1 值類型參數的按值傳遞 116
10.2.2 引用類型參數的按值傳遞 118
10.2.3 string引用類型參數按值傳遞的特殊情況 119
10.2.4 值類型和引用類型參數的按引用傳遞 121
10.3 歸納總結 122
第11章 使類型參數化——泛型 123
11.1 泛型是什麼 123
11.2 C# 2.0為什麼要引入泛型 124
11.3 全麵解析泛型 128
11.3.1 類型參數 128
11.3.2 泛型中的靜態字段和靜態函數問題 129
11.3.3 類型參數的推斷 132
11.3.4 類型參數的約束 133
11.4 歸納總結 136
第12章 可空類型、匿名方法和迭代器 137
12.1 可空類型 137
12.1.1 可空類型簡介 137
12.1.2 你知道空閤並操作符嗎 139
12.1.3 可空類型的裝箱和拆箱操作 141
12.2 匿名方法 143
12.2.1 什麼是匿名方法 143
12.2.2 對變量捕捉過程的剖析 145
12.3 迭代器 148
12.3.1 迭代器的簡介 148
12.3.2 C# 1.0中如何實現迭代器 148
12.3.3 C# 2.0簡化瞭迭代器的實現 150
12.3.4 迭代器的執行過程 153
12.4 歸納總結 153
第13章 C#的春天——C# 3.0中智能的編譯器 154
13.1 自動實現的屬性 154
13.2 隱式類型 156
13.2.1 隱式類型的局部變量 156
13.2.2 隱式類型數組 158
13.3 對象集閤初始化器 159
13.4 匿名類型 162
13.5 歸納總結 165
第14章 不一樣的編碼風格——Lambda錶達式 166
14.1 Lambda錶達式簡介 166
14.1.1 Lambda錶達式的演變過程 166
14.1.2 Lambda錶達式的使用 167
14.2 錶達式也有樹結構——錶達式樹 169
14.2.1 動態地構造一個錶達式樹 170
14.2.2 通過Lambda錶達式來構造錶達式樹 171
14.2.3 如何把錶達式樹轉換成可執行代碼 172
14.3 歸納總結 173
第15章 使類的擴展更簡單——擴展方法 174
15.1 什麼是擴展方法 174
15.2 擴展方法的使用 174
15.2.1 定義擴展方法 174
15.2.2 調用擴展方法 177
15.3 編譯器如何發現擴展方法 177
15.4 空引用也可調用擴展方法 182
15.4.1 拿例子說話 182
15.4.2 空引用上調用擴展方法揭秘 183
15.5 歸納總結 184
第16章 數據操作So easy——LINQ解析 185
16.1 LINQ是什麼 185
16.2 LINQ好在哪裏 186
16.2.1 查詢錶達式 186
16.2.2 使用Linq to Objects查詢集閤 187
16.2.3 使用Linq to XML查詢XML 文件 188
16.3 理解LINQ的本質 191
16.4 歸納總結 193
第17章 小改動大作為——C# 4.0中的微小改動 194
17.1 可選參數和命名實參 194
17.1.1 可選參數 194
17.1.2 命名實參 195
17.1.3 COM互操作的福音 196
17.2 泛型的可變性 198
17.2.1 協變性 198
17.2.2 逆變性 199
17.2.3 協變和逆變的注意事項 200
17.3 歸納總結 201
第18章 靜中有動——動態類型 202
18.1 動態類型簡介 202
18.2 C#為什麼要引入動態類型 202
18.2.1 可以減少強製類型轉換的使用 203
18.2.2 調用Python等動態語言 203
18.3 動態類型約束 203
18.3.1 不能用來調用擴展方法 203
18.3.2 委托與動態類型間不能做隱式轉換 204
18.3.3 不能調用構造函數和靜態方法 204
18.3.4 類型聲明和泛型類型參數 204
18.4 實現自己的動態行為 204
18.4.1 使用ExpandoObject來實現動態行為 205
18.4.2 使用DynamicObject來實現動態行為 205
18.4.3 使用IDynamicMetaObject-Provider接口來實現動態行為 206
18.5 歸納總結 207
第19章 你必須掌握的多綫程編程 208
19.1 多綫程編程必備知識 208
19.1.1 進程與綫程的概念 208
19.1.2 綫程的調度 209
19.1.3 綫程也分前後颱 210
19.2 綫程的容器——綫程池 213
19.2.1 綫程池 213
19.2.2 通過綫程池來實現多綫程 214
19.2.3 協作式取消綫程池綫程 215
19.3 綫程同步 216
19.3.1 多綫程程序中存在的隱患 216
19.3.2 使用監視器對象實現綫程同步 218
19.3.3 綫程同步技術存在的問題 221
19.4 歸納總結 222
第20章 不得不說的異步編程 223
20.1 什麼是異步編程 223
20.2 同步方式存在的問題 223
20.3 異步編程模型(APM) 226
20.4 異步編程模型——EAP 231
20.5 TAP又是什麼 238
20.6 讓異步編程So easy——C# 5.0 中的async和await 242
20.7 歸納總結 245
第21章 齣師前闖關訓練第一關——文件操作 246
21.1 文件操作核心類 246
21.1.1 File 和FileInfo類 246
21.1.2 Directory和DirectoryInfo類 248
21.2 流 250
21.3 對文件進行異步操作 252
21.4 歸納總結 254
第22章 齣師前闖關訓練第二關——網絡編程 255
22.1 網絡編程基礎知識 255
22.1.1 網絡分層總覽 255
22.1.2 各層所使用的協議 256
22.1.3 網絡程序的工作機製 257
22.2 基於TCP的網絡程序的實現 258
22.2.1 TCP的工作過程 258
22.2.2 基於TCP的簡單通信程序的實現 260
22.3 基於UDP的網絡程序的實現 272
22.3.1 UDP的工作原理 272
22.3.2 UDP的優勢 274
22.3.3 基於UDP的簡單通信程序的實現 274
22.4 歸納總結 278
第23章 齣師前闖關訓練最後一關——使用GDI+實現屬於你的截圖工具 279
23.1 前期準備 279
23.1.1 什麼是GDI+ 279
23.1.2 筆、畫筆和顔色 279
23.2 動手實現你的QQ截圖工具 281
23.2.1 實現思路 281
23.2.2 瞧瞧最終結果 290
23.3 歸納總結 291
· · · · · · (
收起)