CLR via C#(第4版)

CLR via C#(第4版)

《CLR via C#(第4版)》是2015年1月清華大學出版社出版的圖書,作者是(美)Jeffrey Richter。

基本介紹

  • 中文名:CLR via C#(第4版)
  • 作者:(美)Jeffrey Richter
  • ISBN:9787302380979
  • 定價:109元
  • 出版社:清華大學出版社
  • 出版時間:2015年1月
內容簡介,圖書目錄,

內容簡介

本書針對CLR和.NET Framework 4.5進行深入、全面的探討,並結合實例介紹了如何利用它們進行設計、開發和調試。全書5部分共29章。第Ⅰ部分介紹CLR基礎,第Ⅱ部分解釋如何設計類型,第Ⅲ部分介紹基本類型,第Ⅳ部分以核心機制為主題,第Ⅴ部分重點介紹執行緒處理。
通過本書的閱讀,讀者可以掌握CLR和.NET Framework的精髓,輕鬆、高效地創建高性能應用程式。

圖書目錄

第I部分 CLR基礎
第1章 CLR的執行模型 3
1.1 將原始碼編譯成託管模組 3
1.2 將託管模組合併成程式集 6
1.3 載入公共語言運行時 7
1.4 執行程式集的代碼 10
1.4.1 IL和驗證 15
1.4.2 不安全的代碼 16
1.5 本機代碼生成器:NGen.exe 17
1.6 Framework類庫 20
1.7 通用類型系統 22
1.8 公共語言規範 24
1.9 與非託管代碼的互操作性 28
第2章 生成、打包、部署和管理應用程式及類型 29
2.1 .NET Framework部署目標 29
2.2 將類型生成到模組中 31
2.3 元數據概述 33
2.4 將模組合併成程式集 39
2.4.1 使用Visual Studio IDE將程式集添加到項目中 44
2.4.2 使用程式集連結器 45
2.4.3 為程式集添加資源檔案 46
2.5 程式集版本資源信息 47
2.6 語言文化 51
2.7 簡單應用程式部署(私有部署的程式集) 52
2.8 簡單管理控制(配置) 53
第3章 共享程式集和強命名程式集 57
3.1 兩種程式集,兩種部署 58
3.2 為程式集分配強名稱 59
3.3 全局程式集快取 63
3.4 在生成的程式集中引用強命名程式集 65
3.5 強命名程式集能防篡改 66
3.6 延遲簽名 67
3.7 私有部署強命名程式集 69
3.8 “運行時”如何解析類型引用 70
3.9 高級管理控制(配置) 73
第Ⅱ部分 設計類型
第4章 類型基礎 81
4.1 所有類型都從System.Object派生 81
4.2 類型轉換 83
4.3 命名空間和程式集 86
4.4 運行時的相互關係 90
第5章 基元類型、引用類型和值類型 99
5.1 程式語言的基元類型 99
5.2 引用類型和值類型 106
5.3 值類型的裝箱和拆箱 111
5.3.1 使用接口更改已裝箱值類型中的欄位(以及為什麼不應該這樣做) 121
5.3.2 對象相等性和同一性 123
5.4 對象哈希碼 126
5.5 dynamic基元類型 127
第6章 類型和成員基礎 135
6.1 類型的各種成員 135
6.2 類型的可見性 138
6.3 成員的可訪問性 139
6.4 靜態類 141
6.5 分部類、結構和接口 142
6.6 組件、多態和版本控制 143
6.6.1 CLR如何調用虛方法、屬性和事件 145
6.6.2 合理使用類型的可見性和成員的可訪問性 148
6.6.3 對類型進行版本控制時的虛方法的處理 150
第7章 常量和欄位 155
7.1 常量 155
7.2 欄位 156
第8章 方法 161
8.1 實例構造器和類(引用類型) 161
8.2 實例構造器和結構(值類型) 164
8.3 類型構造器 167
8.4 操作符重載方法 170
8.5 轉換操作符方法 173
8.6 擴展方法 176
8.6.1 規則和原則 178
8.6.2 用擴展方法擴展各種類型 179
8.6.3 ExtensionAttribute類 181
8.7 分部方法 181
第9章 參數 185
9.1 可選參數和命名參數 185
9.1.1 規則和原則 186
9.1.2 DefaultParameterValueAttribute和OptionalAttribute 188
9.2 隱式類型的局部變數 188
9.3 以傳引用的方式向方法傳遞參數 190
9.4 向方法傳遞可變數量的參數 195
9.5 參數和返回類型的設計規範 197
9.6 常量性 198
第10章 屬性 201
10.1 無參屬性 201
10.1.1 自動實現的屬性 204
10.1.2 合理定義屬性 205
10.1.3 對象和集合初始化器 208
10.1.4 匿名類型 209
10.1.5 System.Tuple類型 212
10.2 有參屬性 214
10.3 調用屬性訪問器方法時的性能 218
10.4 屬性訪問器的可訪問性 219
10.5 泛型屬性訪問器方法 219
第11章 事件 221
11.1 設計要公開事件的類型 222
11.1.1 第一步:定義類型來容納所有需要傳送給事件通知接收者的附加信息 222
11.1.2 第二步:定義事件成員 223
11.1.3 第三步:定義負責引發事件的方法來通知事件的登記對象 224
11.1.4 第四步:定義方法將輸入轉化為期望事件 226
11.2 編譯器如何實現事件 226
11.3 設計偵聽事件的類型 228
11.4 顯式實現事件 230
第12章 泛型 233
12.1 FCL中的泛型 237
12.2 泛型基礎結構 238
12.2.1 開放類型和封閉類型 239
12.2.2 泛型類型和繼承 240
12.2.3 泛型類型同一性 242
12.2.4 代碼爆炸 243
12.3 泛型接口 243
12.4 泛型委託 244
12.5 委託和接口的逆變和協變泛型類型實參 245
12.6 泛型方法 247
12.7 泛型和其他成員 249
12.8 可驗證性和約束 250
12.8.1 主要約束 252
12.8.2 次要約束 253
12.8.3 構造器約束 254
12.8.4 其他可驗證性問題 254
第13章 接口 259
13.1 類和接口繼承 259
13.2 定義接口 260
13.3 繼承接口 261
13.4 關於調用接口方法的更多探討 263
13.5 隱式和顯式接口方法實現(幕後發生的事情) 264
13.6 泛型接口 266
13.7 泛型和接口約束 268
13.8 實現多個具有相同方法名和簽名的接口 269
13.9 用顯式接口方法實現來增強編譯時類型安全性 270
13.10 謹慎使用顯式接口方法實現 271
13.11 設計:基類還是接口 274
第Ⅲ部分 基 本 類 型
第14章 字元、字元串和文本處理 279
14.1 字元 279
14.2 System.String類型 282
14.2.1 構造字元串 282
14.2.2 字元串是不可變的 284
14.2.3 比較字元串 285
14.2.4 字元串留用 290
14.2.5 字元串池 293
14.2.6 檢查字元串中的字元和文本元素 293
14.2.7 其他字元串操作 295
14.3 高效率構造字元串 296
14.3.1 構造StringBuilder對象 296
14.3.2 StringBuilder的成員 297
14.4 獲取對象的字元串表示:ToString 299
14.4.1 指定具體的格式和語言文化 299
14.4.2 將多個對象格式化成一個字元串 303
14.4.3 提供定製格式化器 304
14.5 解析字元串來獲取對象:Parse 306
14.6 編碼:字元和位元組的相互轉換 308
14.6.1 字元和位元組流的編碼和解碼 313
14.6.2 Base-64字元串編碼和解碼 314
14.7 安全字元串 315
第15章 枚舉類型和位標誌 319
15.1 枚舉類型 319
15.2 位標誌 324
15.3 向枚舉類型添加方法 328
第16章 數組 329
16.1 初始化數組元素 331
16.2 數組轉型 333
16.3 所有數組都隱式派生自System.Array 335
16.4 所有數組都隱式實現IEnumerable,ICollection和IList 336
16.5 數組的傳遞和返回 337
16.6 創建下限非零的數組 338
16.7 數組的內部工作原理 339
16.8 不安全的數組訪問和固定大小的數組 342
第17章 委託 345
17.1 初識委託 345
17.2 用委託回調靜態方法 347
17.3 用委託回調實例方法 349
17.4 委託揭秘 349
17.5 用委託回調多個方法(委託鏈) 353
17.5.1 C#對委託鏈的支持 356
17.5.2 取得對委託鏈調用的更多控制 357
17.6 委託定義不要太多(泛型委託) 359
17.7 C#為委託提供的簡化語法 360
17.7.1 簡化語法1:不需要構造委託對象 360
17.7.2 簡化語法2:不需要定義回調方法(lambda表達式) 361
17.7.3 簡化語法3:局部變數不需要手動包裝到類中即可傳給回調方法 364
17.8 委託和反射 367
第18章 定製特性 371
18.1 使用定製特性 371
18.2 定義自己的特性類 374
18.3 特性構造器和欄位/屬性數據類型 377
18.4 檢測定製特性 378
18.5 兩個特性實例的相互匹配 382
18.6 檢測定製特性時不創建從Attribute派生的對象 384
18.7 條件特性類 387
第19章 可空值類型 389
19.1 C#對可空值類型的支持 391
19.2 C#的空接合操作符 393
19.3 CLR對可空值類型的特殊支持 394
19.3.1 可空值類型的裝箱 394
19.3.2 可空值類型的拆箱 395
19.3.3 通過可空值類型調用GetType 395
19.3.4 通過可空值類型調用接口方法 395
第Ⅳ部分 核 心 機 制
第20章 異常和狀態管理 399
20.1 定義“異常” 399
20.2 異常處理機制 401
20.2.1 try塊 402
20.2.2 catch塊 402
20.2.3 finally塊 404
20.3 System.Exception類 407
20.4 FCL定義的異常類 410
20.5 拋出異常 412
20.6 定義自己的異常類 413
20.7 用可靠性換取開發效率 415
20.8 設計規範和最佳實踐 422
20.8.1 善用finally塊 423
20.8.2 不要什麼都捕捉 424
20.8.3 得體地從異常中恢復 425
20.8.4 發生不可恢復的異常時回滾部分完成的操作——維持狀態 426
20.8.5 隱藏實現細節來維繫協定 427
20.9 未處理的異常 429
20.10 對異常進行調試 433
20.11 異常處理的性能問題 435
20.12 約束執行區域(CER) 438
20.13 代碼協定 441
第21章 託管堆和垃圾回收 447
21.1 託管堆基礎 447
21.1.1 從託管堆分配資源 448
21.1.2 垃圾回收算法 449
21.1.3 垃圾回收和調試 451
21.2 代:提升性能 454
21.2.1 垃圾回收觸發條件 458
21.2.2 大對象 459
21.2.3 垃圾回收模式 459
21.2.4 強制垃圾回收 462
21.2.5 監視應用程式的記憶體使用 463
21.3 使用需要特殊清理的類型 464
21.3.1 使用包裝了本機資源的類型 470
21.3.2 一個有趣的依賴性問題 474
21.3.3 GC為本機資源提供的其他功能 475
21.3.4 終結的內部工作原理 479
21.3.5 手動監視和控制對象的生存期 481
第22章 CLR寄宿和AppDomain 489
22.1 CLR寄宿 489
22.2 AppDomain 491
跨越AppDomain邊界訪問對象 494
22.3 卸載AppDomain 504
22.4 監視AppDomain 505
22.5 AppDomain FirstChance異常通知 507
22.6 宿主如何使用AppDomain 507
22.6.1 可執行應用程式 507
22.6.2 Microsoft Silverlight富Internet應用程式 508
22.6.3 Microsoft ASP.NET和XMLWeb服務應用程式 508
22.6.4 Microsoft SQL Server 509
22.6.5 更多的用法只局限於想像力 509
22.7 高級宿主控制 509
22.7.1 使用託管代碼管理CLR 509
22.7.2 寫健壯的宿主應用程式 510
22.7.3 宿主如何拿回它的執行緒 511
第23章 程式集載入和反射 515
23.1 程式集載入 516
23.2 使用反射構建動態可擴展應用程式 520
23.3 反射的性能 521
23.3.1 發現程式集中定義的類型 522
23.3.2 類型對象的準確含義 522
23.3.3 構建Exception派生類型的層次結構 524
23.3.4 構造類型的實例 525
23.4 設計支持載入項的應用程式 527
23.5 使用反射發現類型的成員 529
23.5.1 發現類型的成員 530
23.5.2 調用類型的成員 533
23.5.3 使用綁定句柄減少進程的記憶體消耗 537
第24章 運行時序列化 541
24.1 序列化/反序列化快速入門 542
24.2 使類型可序列化 546
24.3 控制序列化和反序列化 548
24.4 格式化器如何序列化類型實例 551
24.5 控制序列化/反序列化的數據 552
24.6 流上下文 558
24.7 類型序列化為不同類型以及對象反序列化為不同對象 559
24.8 序列化代理 562
24.9 反序列化對象時重寫程式集/類型 566
第25章 與WinRT組件互操作 569
25.1 CLR投射與WinRT組件類型系統規則 571
25.2 框架投射 575
25.2.1 從.NET代碼中調用異步WinRT API 575
25.2.2 WInRT流和.NET流之間的互操作 579
25.2.3 在CLR和WinRT之間傳輸數據塊 580
25.3 用C#定義WinRT組件 583
第Ⅴ部分 線 程 處 理
第26章 執行緒基礎 591
26.1 Windows為什麼要支持執行緒 591
26.2 執行緒開銷 592
26.3 停止瘋狂 595
26.4 CPU發展趨勢 597
26.5 CLR執行緒和Windows執行緒 598
26.6 使用專用執行緒執行異步的計算限制操作 599
26.7 使用執行緒的理由 601
26.8 執行緒調度和優先權 603
26.9 前台執行緒和後台執行緒 608
26.10 繼續學習 609
第27章 計算限制的異步操作 611
27.1 CLR執行緒池基礎 612
27.2 執行簡單的計算限制操作 612
27.3 執行上下文 614
27.4 協作式取消和逾時 615
27.5 任務 619
27.5.1 等待任務完成並獲取結果 620
27.5.2 取消任務 622
27.5.3 任務完成時自動啟動新任務 623
27.5.4 任務可以啟動子任務 625
27.5.5 任務內部揭秘 625
27.5.6 任務工廠 627
27.5.7 任務調度器 628
27.6 Parallel的靜態For,ForEach和Invoke方法 630
27.7 並行語言集成查詢(PLINQ) 634
27.8 執行定時計算限制操作 636
27.9 執行緒池如何管理執行緒 639
27.9.1 設定執行緒池限制 639
27.9.2 如何管理工作者執行緒 640
第28章 I/O限制的異步操作 643
28.1 Windows如何執行I/O操作 643
28.2 C#的異步函式 647
28.3 編譯器如何將異步函式轉換成狀態機 649
28.4 異步函式擴展性 653
28.5 異步函式和事件處理程式 655
28.6 FCL的異步函式 656
28.7 異步函式和異常處理 658
28.8 異步函式的其他功能 658
28.9 應用程式及其執行緒處理模型 661
28.10 以異步方式實現伺服器 663
28.11 取消I/O操作 664
28.12 有的I/O操作必須同步進行 665
28.13 I/O請求優先權 666
第29章 基元執行緒同步構造 669
29.1 類庫和執行緒安全 671
29.2 基元用戶模式和核心模式構造 672
29.3 用戶模式構造 673
29.3.1 易變構造 674
29.3.2 互鎖構造 678
29.3.3 實現簡單的自旋鎖 682
29.3.4 Interlocked Anything模式 685
29.4 核心模式構造 687
29.4.1 Event構造 691
29.4.2 Semaphore構造 693
29.4.3 Mutex構造 694
第30章 混合執行緒同步構造 697
30.1 一個簡單的混合鎖 697
30.2 自旋、執行緒所有權和遞歸 699
30.3 FCL中的混合構造 701
30.3.1 ManualResetEventSlim類和SemaphoreSlim類 701
30.3.2 Monitor類和同步塊 701
30.3.3 ReaderWriterLockSlim類 706
30.3.4 OneManyLock類 709
30.3.5 CountdownEvent類 711
30.3.6 Barrier類 711
30.3.7 執行緒同步構造小結 712
30.4 著名的雙檢鎖技術 713
30.5 條件變數模式 717
30.6 異步的同步構造 719
30.7 並發集合類 723
譯者後記 727

相關詞條

熱門詞條

聯絡我們