C#捷徑教程

C#捷徑教程

C#(C Sharp)是微軟(Microsoft)為。NET Framework量身訂做的程式語言,C#擁有C/C++的強大功能以及Visual Basic簡易使用的特性,是第一個組件導向(Component-oriented)的程式語言,和C++與Java一樣亦為對象導向(object-oriented)程式語言。C sharp(音標 ?ɑ:p )(又被簡稱為"C#")是微軟公司在二OOO年六月發布的一種新的程式語言,並定於在微軟職業開發者論壇(PDC)上登台亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。

內容簡介

C#3.0提供了很多強大的特性,通過使用Lambda表達式、擴展方法和語言集成查詢(LINQ),方便地引入了函式式編程,使C#程式設計師如虎添翼。《#捷徑教程》通過許多精彩的示例介紹了每個特性,深入淺出地講解了C#語言的核心概念,以及如何聰明地套用C#的習慣用法和面向對象的設計模式來挖掘C#和CLR的能力。
《#捷徑教程》適合有一定編程經驗的程式設計師閱讀。

C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有著明顯的不同,它借鑑了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網路框架的主角。

作者簡介

TreyNash,知名.NET技術專家。現於領先的無線設備提供商CSR公司擔任主任工程師。負責藍牙解決方案的開發。在轉向.NET平台之前。他有豐富的COM,DCOM/ATL編程經驗。

編輯推薦

如果你已經有一定C#或者其他語言的編程經驗,就完全不用去讀那些膚淺的入門書或者冗長繁複的大部頭。《C#捷徑教程》將為你提供一條快速掌握C#的捷徑。
作者在不大的篇幅里容納了豐富紮實的內容,不僅全面涵蓋了C#的語言特性,包括3.O引入的Lambda表達式、擴展方法和LlNQ等,總結了正確使用C#的習慣用法和設計模式。而且深入探討了CLR。書中大量富於啟發性的實例和經驗之談。更能讓你的軟體開發水平得到質的飛躍。
好評如潮的C#實戰圖書
汲取.NET技術精髓的捷徑
專章講述習慣用法與設計模式

目錄

第1章 C#預覽 1
1.1C#和C++的區別 1
1.1.1C# 1
1.1.2C++ 1
1.1.3CLR垃圾回收 2
1.2C#程式示例 3
1.3C#2.0擴展特性概述 4
1.4C#3.0新特性概覽 5
1.5小結 6
第2章 C#和CLR 7
2.1CLR中的JIT編譯器 7
2.2程式集及程式集載入器 9
2.2.1最小化程式的工作集 9
2.2.2給程式集命名 9
2.2.3載入程式集 10
2.3元數據 10
2.4交叉語言的兼容性 11
2.5小結 12
第3章 C#語法概述 13
3.1C#是一門強類型的語言 13
3.2表達式 14
3.3語句和表達式 15
3.4類型和變數 15
3.4.1值類型 16
3.4.2引用類型 19
3.4.3默認變數初始化 20
3.4.4隱式類型化局部變數 20
3.4.5類型轉換 22
3.4.6as和is操作符 23
3.4.7泛型 25
3.5命名空間 26
3.5.1定義命名空間 27
3.5.2使用命名空間 28
3.6控制流 29
3.6.1if-else、while、do-while和for 29
3.6.2switch 29
3.6.3foreach 30
3.6.4break、continue、goto、return和throw 31
3.7小結 31
第4章 類、結構和對象 32
4.1類定義 33
4.1.1欄位 34
4.1.2構造函式 36
4.1.3方法 37
4.1.4屬性 38
4.1.5封裝 42
4.1.6可訪問性 45
4.1.7接口 46
4.1.8繼承 47
4.1.9密封類 53
4.1.10抽象類 53
4.1.11嵌套類 54
4.1.12索引器 57
4.1.13分部類 59
4.1.14分部方法 59
4.1.15靜態類 61
4.1.16保留的成員名字 62
4.2值類型定義 63
4.2.1構造函式 63
4.2.2this的含義 65
4.2.3終結器 68
4.2.4接口 68
4.3匿名類型 68
4.4對象初始化器 71
4.5裝箱和拆箱 73
4.5.1什麼時候發生裝箱 77
4.5.2效率和混淆 78
4.6System.Object 79
4.6.1等同性及其意義 80
4.6.2IComparable接口 81
4.7創建對象 81
4.7.1new關鍵字 81
4.7.2欄位初始化 82
4.7.3靜態(類)構造函式 83
4.7.4實例構造函式和創建順序 85
4.8銷毀對象 89
4.8.1終結器 89
4.8.2確定性的析構 90
4.8.3異常處理 91
4.9可清除對象 91
4.9.1IDisposable接口 91
4.9.2using關鍵字 93
4.10方法參數類型 95
4.10.1值參數 95
4.10.2ref參數 95
4.10.3out參數 97
4.10.4參數數組 97
4.11方法重載 98
4.12繼承和虛方法 98
4.12.1虛方法和抽象方法 98
4.12.2override和new方法 99
4.12.3密封方法 100
4.12.4關於C#虛方法再囉嗦幾句 101
4.13繼承,包含和委託 101
4.13.1接口繼承和類繼承的選擇 101
4.13.2委託和組合與繼承 102
4.14小結 104
第5章 接口和契約 105
5.1 接口定義類型 105
5.2 定義接口 107
5.2.1 接口中可以有什麼 107
5.2.2 接口繼承與成員隱藏 108
5.3 實現接口 110
5.3.1 隱式接口實現 110
5.3.2 顯式接口實現 110
5.3.3 派生類中覆蓋接口實現 112
5.3.4 小心值類型實現接口的副作用 115
5.4 接口成員匹配規則 116
5.5 值類型的顯示接口實現 119
5.6 版本考慮 121
5.7 契約 122
5.7.1 類實現契約 122
5.7.2 接口契約 123
5.8 在接口和類之間選擇 124
5.9 小結 127
第6章 重載操作符 128
6.1 只因為:可以並不意味著應該 128
6.2 重載操作符的類型和格式 128
6.3 操作符不應該改變其運算元 129
6.4 參數順序有影響么 130
6.5 重載加法運算符 130
6.6 可重載的操作符 131
6.6.1 比較操作符 132
6.6.2 轉換操作符 134
6.6.3 布爾操作符 136
6.7 小結 139
第7章 異常處理和異常安全 140
7.1 CLR如何對待異常 140
7.2 C#里的異常處理機制 140
7.2.1 拋出異常 141
7.2.2 .NET2.0開始的未處理異常的變化 141
7.2.3 try語句語法預覽 142
7.2.4重新拋出異常和轉譯異常 144
7.2.5 finally代碼塊拋出的異常 146
7.2.6 終結器拋出的異常 146
7.2.7 靜態構造函式拋出的異常 147
7.3 誰應該處理異常 148
7.4 避免使用異常來控制流程 149
7.5 取得異常中立 149
7.5.1 異常中立代碼的基本結構 149
7.5.2 受限執行區域 154
7.5.3 臨界終結器和SafeHandle 156
7.6 創建定製的異常類 159
7.7 使用分配的資源和異常 161
7.8 提供回滾行為 164
7.9 小結 167
第8章 使用字元串 168
8.1 字元串概述 168
8.2 字元串字面量 169
8.3 格式指定和全球化 170
8.3.1 Object.ToString、IFormattable和CultureInfo 170
8.3.2 創建和註冊自定義CultureInfo類型 171
8.3.3 格式化字元串 173
8.3.4 Console.WriteLine和String.Format 174
8.3.5 自定義類型的字元串格式化舉例 175
8.3.6 ICustomFormatter 176
8.3.7 字元串比較 178
8.4 處理來自外部的字元串 179
8.5 StringBuilder 181
8.6 使用正則表達式搜尋字元串 182
8.6.1 使用正則表達式搜尋 183
8.6.2 搜尋和分組 184
8.6.3 使用正則表達式替換文本 187
8.6.4 正則表達式創建選項 189
8.7 小結 191
第9章 數組、容器類型和疊代器 192
9.1 數組介紹 192
9.1.1 隱式類型化數組 193
9.1.2 類型的轉換和協方差 195
9.1.3 排序和搜尋 195
9.1.4 同步 196
9.1.5 向量與數組 196
9.2 多維矩形數組 198
9.3 多維鋸齒數組 199
9.4 容器類型 201
9.4.1 比較ICollectionT和ICollection 201
9.4.2 容器同步 202
9.4.3 列表 203
9.4.4 字典 203
9.4.5 集合 204
9.4.6 System.Collections.ObjectModel 204
9.4.7 效率 207
9.5 IEnumerableT、IEnumeratorT、IEnumerable和IEnumerator 208
9.6 疊代器 211
9.7 容器初始化器 220
9.8 小結 220
第10章 委託,匿名方法和事件 222
10.1 委託概覽 222
10.2 委託的創建和使用 223
10.2.1 單委託 223
10.2.2 委託鏈 224
10.2.3 疊代委託鏈 226
10.2.4 非綁定(公開實例)的委託 227
10.3 事件 230
10.4 匿名方法 233
10.4.1 注意捕獲變數的使用 237
10.4.2 匿名方法作為委託參數綁定器 239
10.5 Strategy模式 243
10.6 小結 244
第11章 泛型 245
11.1 泛型和C++模板之間的區別 246
11.2 泛型的效率和類型安全 246
11.3 泛型的類型定義和構造類型 248
11.3.1 泛型類和結構 249
11.3.2 泛型接口 251
11.3.3 泛型方法 251
11.3.4 泛型委託 253
11.3.5 泛型轉換 256
11.3.6 默認值表達式 257
11.3.7 Nullable類型 258
11.3.8 構造類型訪問許可權控制 260
11.3.9 泛型和繼承 260
11.4 約束 261
11.5 泛型系統容器 266
11.6 泛型系統接口 268
11.7 精選的問題和解決方案 269
11.7.1 泛型類型中的轉化和操作符 269
11.7.2 動態地創建構造類型 277
11.8 小結 279
第12章 C#中的執行緒 280
12.1 C#和.NET中的執行緒 280
12.1.1 開始執行緒編程 281
12.1.2 IOU模式和異步方法調用 283
12.1.3 執行緒狀態 283
12.1.4 終止執行緒 286
12.1.5 停止和喚醒休眠執行緒 287
12.1.6 等待執行緒退出 288
12.1.7前台和後台執行緒 288
12.1.8 執行緒本地存儲 289
12.1.9 非託管執行緒和COM套件如何適應 292
12.2 執行緒間同步工作 293
12.2.1 用Interlocked類實現輕量級的同步 295
12.2.2 Monitor類 299
12.2.3 鎖對象 307
12.2.4 信號量 311
12.2.5 事件 312
12.2.6 Win32的同步對象和WaitHandle 313
12.3 使用執行緒池 315
12.3.1 異步方法調用 315
12.3.2 定時器 322
12.4 小結 323
第13章 C#規範形式探索 324
13.1 引用類型的規範形式 324
13.1.1 類默認是密封的 325
13.1.2 使用非虛擬接口模式 326
13.1.3 對象是否可克隆 328
13.1.4 對象是否可清除 333
13.1.5 對象需要終結器嗎 336
13.1.6 對象相等意味著什麼 342
13.1.7 如果重寫了Equals方法,那么也應該重寫GetHashCode方法 348
13.1.8 對象支持排序嗎 350
13.1.9 對象需要形式化顯示嗎 353
13.1.10 對象可以被轉換嗎 356
13.1.11 在所有情況下都保證類型安全 357
13.1.12 使用非可變的引用類型 361
13.2 值類型的規範形式 364
13.2.1 為了獲得更好的性能而重寫Equals方法 364
13.2.2 值類型需要支持接口嗎 368
13.2.3 將接口成員和派生方法實現為類型安全的形式 369
13.3 小結 371
13.3.1 引用類型的檢查單 372
13.3.2 值類型的檢查單 373
第14章 擴展方法 374
14.1 擴展方法介紹 374
14.1.1 編譯器如何發現擴展方法 375
14.1.2 探究內部實現 377
14.1.3 代碼易讀性與代碼易懂性 378
14.2 使用建議 379
14.2.1 考慮擴展方法優先於繼承 379
14.2.2 分離的命名空間中的隔離擴展方法 380
14.2.3 修改一個類型的契約可能會打破擴展方法 381
14.3 轉換 381
14.4 鏈式操作 385
14.5 自定義疊代器 386
14.6 訪問者模式 392
14.7 小結 396
第15章 lambda表達式 397
15.1 lambda表達式介紹 397
15.1.1 lambda表達式 398
15.1.2 lambda語句 402
15.2 表達式樹 403
15.2.1 對表達式的操作 404
15.2.2 函式的數據表現 405
15.3 lambda表達式的有益套用 406
15.3.1 疊代器和生成器重訪問 406
15.3.2 閉包(變數捕獲)和快取 409
15.3.3 currying 413
15.3.4 匿名遞歸 415
15.4 小結 416
第16章 LINQ:語言集成查詢 417
16.1 連線數據的橋樑 417
16.1.1 查詢表達式 418
16.1.2 再談擴展方法和lambda表達式 420
16.2 標準查詢操作符 420
16.3 C#查詢關鍵字 422
16.3.1 from子句和範圍變數 422
16.3.2 join子句 423
16.3.3 where子句和過濾器 425
16.3.4 orderby子句 425
16.3.5 select子句和投影 426
16.3.6 let子句 427
16.3.7 group子句 429
16.3.8 into子句和持續性 431
16.4 偷懶的好處 432
16.4.1 C#疊代器鼓勵懶惰 432
16.4.2 不能偷懶 433
16.4.3 立即執行查詢 435
16.4.4 再談表達式樹 435
16.5 函式式編程中的技術 436
16.5.1 自定義標準查詢操作符和延遲求值 436
16.5.2 替換foreach語句 443
16.6 小結 444
……

相關詞條

相關搜尋

熱門詞條

聯絡我們