內容簡介
本書是C#領域久負盛名的經典著作,深入全面地敘述了C#程式語言和.NET平台核心,並以大量示例剖析相關概念。書中介紹了C#的各種語言構造、.NET2.0的類、核心API、公共中間語言(CIL)、動態程式集和ASPNET擴展等內容;同時也介紹了.NET3.0、.NET3.5和.NET4中的新的編程API,包括WPF、WCF和WF的功能;另外,還介紹了最新的C#2010程式語言、DLR、TPL、LINQ編程技術、COM與.NET的互操作性以及平台無關的.NET開發等。
本書由微軟C#MVPAndrewTroelsen編寫,歷經多次修訂,適合各層次.NET開發人員閱讀。
圖書目錄
目 錄
第一部分 C#與.NET平台
第1章 .NET之道 2
1.1 .NET之前的世界 2
1.2 .NET解決方案 5
1.3 .NET平台構造塊(CLR、CTS和CLS)簡介 5
1.4 其他支持.NET的程式語言 7
1.5 .NET程式集概覽 9
1.6 CTS 14
1.7 CLS 17
1.8 CLR 18
1.9 程式集/命名空間/類型的區別 19
1.10 使用ildasm.exe探索程式集 24
1.11 使用Reflector來查看程式集 26
1.12 部署.NET運行庫 27
1.13 .NET的平台無關性 27
1.14 小結 28
第2章 構建C#應用程式 30
2.1 .NET Framework 4 SDK的作用 30
2.2 用csc.exe構建C#應用程式 31
2.3 使用Notepad++構建.NET應用程式 36
2.4 使用sharpdevelop構建.NET應用程式 36
2.5 使用Visual C# 2010 Express構建.NET應用程式 38
2.6 使用visual studio 2010構建.NET應用程式 40
2.7 小結 50
第二部分 C#核心編程結構
第3章 C#核心編程結構Ⅰ 52
3.1 一個簡單的C#程式 52
3.2 有趣的題外話:System.Environment類的其他成員 57
3.3 System.Console類 58
3.4 系統數據類型和C#簡化符號 62
3.5 使用字元串數據 70
3.6 窄化和寬化數據類型轉換 76
3.7 隱式類型本地變數 81
3.8 C#疊代結構 84
3.9 條件結構和關係/相等操作符 86
3.10 小結 89
第4章 C#核心編程結構Ⅱ 90
4.1 方法和參數修飾符 90
4.2 C#中的數組操作 99
4.3 枚舉類型 105
4.4 結構類型 109
4.5 值類型和引用類型 112
4.6 C#可空類型 118
4.7 小結 121
第5章 定義封裝的類類型 122
5.1 C#類類型 122
5.2 構造函式 125
5.3 this關鍵字的作用 128
5.4 static關鍵字 133
5.5 定義OOP的支柱 139
5.6 C#訪問修飾符 142
5.7 第一個支柱:C#的封裝服務 144
5.8 自動屬性 154
5.9 對象初始化器語法 157
5.10 常量數據 160
5.11 分部類型 162
5.12 小結 163
第6章 繼承和多態 164
6.1 繼承的基本機制 164
6.2 回顧Visual Studio類關係圖 168
6.3 OOP的第二個支柱:繼承 169
6.4 包含/委託編程 174
6.5 OOP的第三個支柱:C#的多態支持 176
6.6 基類/派生類的轉換規則 187
6.7 超級父類:System.Object 189
6.8 小結 195
第7章結構化異常處理196
7.1 錯誤、bug與異常 196
7.2 .NET異常處理的作用 197
7.3 最簡單的例子 199
7.4 配置異常的狀態 202
7.5 系統級異常(System.System-Exception) 206
7.6 應用程式級異常(System.Applica-tionException) 207
7.7 處理多個異常 210
7.8 誰在引發什麼異常 215
7.9 未處理異常的後果 215
7.10 使用Visual Studio調試未處理的異常 216
7.11 損壞狀態異常簡介 217
7.12 小結 218
第8章 對象的生命周期 219
8.1 類、對象和引用 219
8.2 對象生命周期的基礎 220
8.3 應用程式根的作用 223
8.4 對象的代 224
8.5 .NET 1.0至.NET 3.5的並發垃圾回收 225
8.6 .NET 4下的後台垃圾回收 225
8.7 System.GC類型 225
8.8 構建可終結對象 229
8.9 構建可處置對象 231
8.10 構建可終結類型和可處置類型 234
8.11 延遲對象實例化 237
8.12 小結 240
第三部分 高級C#編程結構
第9章 接口 242
9.1 接口類型 242
9.2 定義自定義接口 245
9.3 實現接口 247
9.4 在對象級別調用接口成員 248
9.5 接口作為參數 250
9.6 接口作為返回值 252
9.7 接口類型數組 253
9.8 使用Visual Studio 2010實現接口 253
9.9 通過顯式接口實現解決命名衝突 254
9.10 設計接口層次結構 257
9.11 構建可枚舉類型(IEnumerable和IEnumerator) 260
9.12 構建可克隆的對象(ICloneable) 265
9.13 構建可比較的對象(IComparable) 269
9.14 小結 273
第10章 泛型 274
10.1 非泛型集合 274
10.2 泛型類型參數的作用 281
10.3 System.Collections.Generic命名空間 285
10.4 創建自定義泛型方法 292
10.5 創建自定義泛型結構和類 294
10.6 類型參數的約束 297
10.7 小結 300
第11章 委託、事件和Lambda 301
11.1 .NET委託類型 301
11.2 在C#中定義委託類型 302
11.3 System.MulticastDelegate與System.Delegate基類 304
11.4 最簡單的委託示例 305
11.5 使用委託傳送對象狀態通知 307
11.6 方法組轉換語法 313
11.7 委託協變 314
11.8 泛型委託 316
11.9 C#事件 318
11.10 C#匿名方法 325
11.11 Lambda表達式 328
11.12 小結 333
第12章 高級C#語言特性 335
12.1 索引器方法 335
12.2 操作符重載 339
12.3 自定義類型轉換 347
12.4 擴展方法 352
12.5 分部方法 360
12.6 匿名類型 362
12.7 指針類型 367
12.8 小結 373
第13章 LINQ to Object 374
13.1 LINQ特有的編程結構 374
13.2 LINQ的作用 377
13.3 將LINQ查詢套用於原始數組 379
13.4 返回LINQ查詢的結果 385
13.5 將LINQ查詢套用到集合對象 387
13.6 C#LINQ查詢操作符 389
13.7 LINQ查詢語句的內部表示 396
13.8 小結 400
第四部分 用.NET程式集編程
第14章 .NET程式集入門 402
14.1 定義自定義命名空間 402
14.2 .NET程式集的作用 407
14.3 .NET程式集的格式 409
14.4 構建和使用單檔案程式集 412
14.5 構建和使用多檔案程式集 421
14.6 私有程式集 423
14.7共享程式集427
14.8 使用共享程式集 433
14.9 配置共享程式集 435
14.10 發行者策略程式集 439
14.11 元素 440
14.12 System.Configuration命名空間 441
14.13 小結 442
第15章 類型反射、晚期綁定和基於特性的編程 443
15.1 類型元數據的必要性 443
15.2 反射 447
15.3 構建自定義的元數據查看器 450
15.4 動態載入程式集 454
15.5 反射共享程式集 457
15.6 晚期綁定 458
15.7 .NET特性的作用 461
15.8 構建自定義特性 465
15.9 程式集級別(和模組級別)特性 467
15.10 使用早期綁定反射特性 469
15.11 使用晚期綁定反射特性 470
15.12 反射、晚期綁定和自定義特性的使用背景 471
15.13 構建可擴展的應用程式 472
15.14 小結 477
第16章 進程、應用程式域和對象上下文 478
16.1 Windows進程的作用 478
16.2 .NET平台下與進程進行互動 480
16.3 .NET應用程式域 488
16.4 與默認應用程式域進行互動 489
16.5 創建新的應用程式域 492
16.6 對象上下文邊界 495
16.7 進程、應用程式域和上下文小結 498
16.8 小結 499
第17章 CIL和動態程式集的作用 500
17.1 學習CIL語法的原因 500
17.2 CIL指令、特性和操作碼 501
17.3 入棧和出棧:CIL基於棧的本質 502
17.4 正反向工程 504
17.5 CIL指令和特性 510
17.6 .NET基礎類庫、C#和CIL數據類型的映射 515
17.7 在CIL中定義類型成員 516
17.8 剖析CIL操作碼 518
17.9 使用CIL構建.NET程式集 522
17.10 動態程式集 526
17.11 小結 534
第18章 動態類型和動態語言運行時 535
18.1 dynamic關鍵字的作用 535
18.2 DLR的作用 540
18.3 使用動態類型簡化後期綁定調用 542
18.4 使用動態數據簡化COM互操作 544
18.5 使用C# 2010的特性進行COM互操作 548
18.6 小結 552
第五部分 .NET基礎類庫
第19章 構建多執行緒應用程式 554
19.1 進程、應用程式域、上下文及執行緒之間的關係 554
19.2 .NET委託的簡短回顧 556
19.3 委託的異步性557
19.4 異步調用方法 559
19.5 System.Threading命名空間 564
19.6 System.Threading.Thread類 564
19.7 以編程方式創建次執行緒 567
19.8 並發問題 572
19.9 使用Timer Callback編程 578
19.10 CLR執行緒池 579
19.11 .NET平台下的並行編程 581
19.12 並行LINQ查詢(PLINQ) 588
19.13 小結 590
第20章 檔案輸入輸出和對象序列化 591
20.1 研究SystemIO命名空間 591
20.2 Directory(Info)和File(Info)類型 592
20.3 使用DirectoryInfo類型 593
20.4 使用Directory類型 596
20.5 使用DriveInfo類類型 597
20.6 使用FileInfo類 598
20.7 使用File類型 601
20.8 Stream抽象類 603
20.9 使用StreamWriter和StreamReader類型 605
20.10 使用StringWriter和StringReader類型 608
20.11 使用BinaryWriter和Binary-Reader 609
20.12 以編程方式“觀察”檔案 610
20.13 對象序列化 612
20.14 為序列化配置對象 614
20.15 選擇序列化格式化程式 616
20.16 使用BinaryFormatter序列化對象 618
20.17 使用SoapFormatter序列化對象 620
20.18 使用XmlSerializer序列化對象 621
20.19 序列化對象集合 623
20.20 自定義Soap/Binary序列化過程 624
20.21 小結 628