第1章 C#和.NET Core簡介7
1.1 面向對象7
1.2 類型安全性8
1.3 內存管理8
1.4 平臺支持9
1.5 C#和公共語言運行時9
1.6 框架與基礎類庫10
1.7 遺留框架和小眾框架11
1.8 Windows Runtime12
1.9 C#簡史14
第2章 C#語言基礎26
2.1 第一個C#程序26
2.2 語法29
2.3 類型基礎32
2.4 數(shù)值類型40
2.5 布爾類型和運算符48
2.6 字符串和字符49
2.7 數(shù)組52
2.8 變量和參數(shù)57
2.9 表達式和運算符68
2.10 null運算符72
2.11 語句74
2.12 命名空間84
第3章 在C#中創(chuàng)建類型91
3.1 類91
3.2 繼承108
3.3 object類型117
3.4 結構體120
3.5 訪問權限修飾符123
3.6 接口125
3.7 枚舉類型131
3.8 嵌套類型134
3.9 泛型136
第4章 C#的高級特性149
4.1 委托149
4.2 事件158
4.3 Lambda表達式164
4.4 匿名方法169
4.5 try語句和異常169
4.6 枚舉類型和迭代器178
4.7 可空值類型183
4.8 可空引用類型(C# 8)188
4.9 擴展方法191
4.10 匿名類型193
4.11 元組194
4.12 模式198
4.13 特性202
4.14 調用者信息特性204
4.15 動態(tài)綁定205
4.16 運算符重載213
4.17 不安全的代碼和指針216
4.18 預處理指令220
4.19 XML文檔222
第5章 框架概述227
5.1 .NET Standard227
5.2 框架與C#語言版本的關系230
5.3 參考程序集231
5.4 CLR和BCL231
5.5 應用程序框架235
第6章 框架基礎239
6.1 字符串與文本處理239
6.2 日期和時間252
6.3 日期和時區(qū)259
6.4 格式化和解析265
6.5 標準格式字符串與解析標記271
6.6 其他轉換機制278
6.7 全球化282
6.8 操作數(shù)字283
6.9 枚舉287
6.10 Guid結構體290
6.11 相等比較291
6.12 順序比較301
6.13 實用類304
第7章 集合309
7.1 枚舉309
7.2 ICollection和IList接口316
7.3 Array類320
7.4 List、Queue、Stack和Set328
7.5 字典336
7.6 自定義集合與代理342
7.7 不可變集合348
7.8 擴展相等比較和排序操作351
第8章 LINQ查詢359
8.1 入門359
8.2 流式語法361
8.3 查詢表達式367
8.4 延遲執(zhí)行372
8.5 子查詢378
8.6 構造方式381
8.7 映射方式384
8.8 解釋型查詢386
8.9 EF Core393
8.10 構建查詢表達式404
第9章 LINQ運算符409
9.1 概述410
9.2 篩選413
9.3 映射417
9.4 連接429
9.5 排序437
9.6 分組440
9.7 集合運算符443
9.8 轉換方法444
9.9 元素運算符447
9.10 聚合方法449
9.11 量詞運算符453
9.12 生成序列的方法455
第10章 LINQ to XML456
10.1 架構概述456
10.2 X-DOM概述457
10.3 實例化X-DOM460
10.4 導航和查詢463
10.5 更新X-DOM468
10.6 使用Value471
10.7 文檔和聲明474
10.8 名稱和命名空間477
10.9 注解483
10.10 將數(shù)據(jù)映射到X-DOM484
第11章 其他XML與JSON技術488
11.1 XmlReader488
11.2 XmlWriter496
11.3 XmlReader/XmlWriter的使用模式498
11.4 處理JSON502
第12章 對象銷毀與垃圾回收509
12.1 IDisposable接口、Dispose方法和Close方法509
12.2 自動垃圾回收514
12.3 終結器517
12.4 垃圾回收器的工作方式521
12.5 托管內存泄漏527
12.6 弱引用530
第13章 診斷534
13.1 條件編譯534
13.2 Debug和Trace類537
13.3 調試器的集成541
13.4 進程與線程處理542
13.5 StackTrace和StackFrame類542
13.6 Windows事件日志544
13.7 性能計數(shù)器546
13.8 Stopwatch類551
13.9 跨平臺診斷工具551
第14章 并發(fā)與異步556
14.1 概述556
14.2 線程557
14.3 任務572
14.4 異步原則580
14.5 C#的異步函數(shù)585
14.6 異步模式603
14.7 舊有的異步編程模式611
第15章 流與I/O614
15.1 流的架構614
15.2 使用流616
15.3 流適配器629
15.4 壓縮流637
15.5 操作ZIP文件640
15.6 文件與目錄操作641
15.7 在UWP中進行文件I/O操作652
15.8 操作系統(tǒng)安全性656
15.9 內存映射文件659
第16章 網絡663
16.1 .NET網絡架構663
16.2 地址與端口665
16.3 URI666
16.4 客戶端類668
16.5 使用HTTP681
16.6 編寫HTTP服務器685
16.7 使用FTP687
16.8 使用DNS689
16.9 通過SmtpClient類發(fā)送郵件690
16.10 使用TCP691
16.11 使用TCP接收POP3郵件694
16.12 在UWP中使用TCP696
第17章 序列化699
17.1 序列化的概念699
17.2 XML 序列化器703
17.3 JSON 序列化器712
17.4 二進制序列化器721
17.5 二進制序列化特性723
17.6 使用ISerializable接口進行二進制序列化725
第18章 程序集729
18.1 程序集的組成部分729
18.2 強名稱和程序集簽名733
18.3 程序集名稱735
18.4 認證代碼簽名737
18.5 資源和附屬程序集739
18.6 程序集的加載、解析與隔離747
第19章 反射和元數(shù)據(jù)768
19.1 反射和激活類型768
19.2 反射和調用成員775
19.3 反射程序集788
19.4 使用特性789
19.5 動態(tài)生成代碼794
19.6 生成程序集和類型800
19.7 生成類型成員803
19.8 生成泛型方法和泛型類型809
19.9 復雜的生成目標811
19.10 解析IL814
第20章 動態(tài)編程820
20.1 動態(tài)語言運行時820
20.2 數(shù)值類型統(tǒng)一822
20.3 動態(tài)成員重載解析823
20.4 實現(xiàn)動態(tài)對象828
20.5 與動態(tài)語言進行互操作832
第21章 加密834
21.1 概述834
21.2 Windows數(shù)據(jù)保護835
21.3 散列算法836
21.4 對稱加密837
21.5公鑰加密和簽名842
第22章 高級線程處理846
22.1 同步概述846
22.2 排他鎖847
22.3 鎖和線程安全性855
22.4 非排他鎖860
22.5 使用事件等待句柄發(fā)送信號866
22.6 Barrier類874
22.7 延遲初始化875
22.8 線程本地存儲877
22.9 定時器881
第23章 并行編程885
23.1 選擇PFX的原因885
23.2 PLINQ888
23.3 Parallel類900
23.4 任務并行907
23.5 處理AggregateException916
23.6 并發(fā)集合919
23.7 BlockingCollection類922
第24章 Span和Memory926 24.1 Span和切片927
24.2 Memory類930 24.3 前向枚舉器931
24.4 操作棧分配內存和非托管內存933
第25章 原生程序和COM組件互操作性935
25.1 調用原生DLL935
25.2 類型的封送936
25.3 非托管代碼中的回調函數(shù)940
25.4 模擬C共用體941
25.5 共享內存942
25.6 將結構體映射到非托管內存944
25.7 COM互操作性948
25.8 在C#中調用COM組件950
25.9 內嵌互操作類型953
25.10 在COM中訪問C#對象954
第26章 正則表達式956
26.1 正則表達式基礎956
26.2 量詞符號961
26.3 零寬度斷言962
26.4 分組965
26.5 替換并分割文本966
26.6 正則表達式實例968
26.7 正則表達式語言參考971
第27章 Roslyn編譯器975
27.1 Roslyn架構975
27.2 語法樹976
27.3 編譯過程和語義模型991