内容簡介
作為歷年來深受各層次開发人員歡迎的C#指南,本書讨論了C#3.0到C#8.0中的重要C#特性,強調了現代編程模式,可幫助讀者編寫簡潔、強大、健壯、安全且易于維護的C#代碼。
在本書中,世界知名C#專家MarkMichaelis對C#語言進行了全面而深入的探讨,并提供了關于空引用類型、索引和區間、增強模式匹配、異步流等關鍵C#8.0增強功能的專業論述。他用簡潔的例子闡釋關鍵C#構造,并提供了大量優秀實踐編程規范,可為你快速掌握專家級C#編程技能并進行高效軟件開发提供翔實指導。
本書内容:
使用結構化編程構造直接編寫功能代碼
了解可空引用類型的復雜性和解決方案
徹底掌握C#對象構造,包括類、繼承和接口
使用泛型、委托、lambda表達式和事件減少代碼冗余
充分利用集合,包括新的标準查詢運算符集合API
充分利用反射、屬性和聲明式編程范式
使用基于任務的異步模式和C#8.0異步流改進多線程處理
通過并行處理數据和多線程任務提高性能
使用增強的模式匹配語法編寫復雜類型
與用其他語言編寫的非托管代碼(包括基于C的API)進行互操作
探索C#程序與底層CLI運行時之間的關系
作者簡介
馬克.米凱利斯(MarkMichaelis)
MarkMichaelis是創新型軟件架構和開发公司IntelliTect的創始人、首席技術架構師和培訓師。Mark領導着他的公司不斷進取,同時在世界各地舉辦有關領導力或技術的會議,并代表微軟或其他客戶進行演講。他還撰寫了大量文章和書籍,并且是東華盛頓大學的客座教授、Spokane.NET用戶組的創始人,以及每年一屆的TEDxCoeurd'Alene活動的聯合組織者。
作為世界知名的C#專家,Mark自2007年以來一直擔任微軟區域總監,并榮任微軟MVP超過25年。
Mark擁有伊利諾伊大學哲學專業文學學士學位和伊利諾伊理工大學計算機科學碩士學位。
目錄
第1章 C#概述/11.1 Hello,World/2
1.2 C#語法基礎/9
1.3 使用變量/16
1.4 控制台輸入和輸出/18
1.5 托管執行和CLI/24
1.6 多個.NET框架/28
1.7 小結/30
第2章 數据類型/31
2.1 基本數值類型/31
2.2 更多基本類型/38
2.3 數据類型轉換/49
2.4 小結/55
第3章 更多數据類型/56
3.1 類型的劃分/56
3.2 将變量聲明為可空/58
3.3 隐式類型的局部變量/62
3.4 元組/64
3.5 數組/68
3.6 小結/82
第4章 操作符和控制流程/83
4.1 操作符/83
4.2 控制流程概述/95
4.3 代碼塊/99
4.4 代碼塊、作用域和聲明空間/101
4.5 布爾表達式/102
4.6 關于null的編程/107
4.7 按位操作符/112
4.8 控制流程語句/116
4.9 跳轉語句/124
4.10 C#預處理器指令/129
4.11 小結/135
第5章 方法和參數/136
5.1 方法的調用/137
5.2 方法的聲明/141
5.3 using指令/145
5.4 Main()的返回值和參數/149
5.5 高級方法參數/151
5.6 遞歸/159
5.7 方法重載/162
5.8 可選參數/164
5.9 用異常實現基本錯誤處理/167
5.10 小結/178
第6章 類/179
6.1 類的聲明和實例化/182
6.2 實例字段/184
6.3 實例方法/186
6.4 使用this關鍵字/187
6.5 訪問修飾符/193
6.6 屬性/194
6.7 構造函數/207
6.8 不可空引用類型屬性與構造函數/214
6.9 可空特性/217
6.10 解構函數/219
6.11 靜态成員/220
6.12 擴展方法/228
6.13 封裝數据/229
6.14 嵌套類/231
6.15 分部類/233
6.16 小結/236
第7章 繼承/237
7.1 派生/238
7.2 重寫基類/244
7.3 抽象類/253
7.4 所有類都從System.Object派生/258
7.5 用is操作符進行模式匹配/259
7.6 switch語句中的模式匹配/264
7.7 避免對多态類對象使用模式匹配/265
7.8 小結/267
第8章 接口/268
8.1 接口概述/269
8.2 通過接口實現多态性/270
8.3 接口實現/274
8.4 在實現類和接口之間轉換/278
8.5 接口繼承/278
8.6 多接口繼承/280
8.7 接口上的擴展方法/281
8.8 版本升級/283
8.9 擴展方法與默認接口成員/295
8.10 比較接口和抽象類/296
8.11 比較接口和特性/297
8.12 小結/297
第9章 值類型/298
9.1 結構/301
9.2 裝箱/305
9.3 枚舉/311
9.4 小結/319
第10章 合式類型/321
10.1 重寫object的成員/321
10.2 操作符重載/331
10.3 引用其他程序集/337
10.4 類型封裝/342
10.5 定義命名空間/343
10.6 XML注釋/346
10.7 垃圾回收/349
10.8 資源清理/352
10.9 推遲初始化/363
10.10 小結/365
第11章 異常處理/366
11.1 多異常類型/366
11.2 捕捉異常/368
11.3 重新抛出現有異常/370
11.4 常規catch塊/371
11.5 異常處理規范/372
11.6 自定義異常/374
11.7 重新抛出包裝的異常/377
11.8 小結/380
第12章 泛型/381
12.1 如果C#沒有泛型/381
12.2 泛型類型概述/386
12.3 約束/395
12.4 泛型方法/407
12.5 協變性和逆變性/411
12.6 泛型的内部機制/416
12.7 小結/419
第13章 委托和Lambda表達式/420
13.1 委托概述/421
13.2 聲明委托類型/424
13.3 Lambda表達式/430
13.4 匿名方法/435
13.5 委托沒有結構相等性/436
13.6 外部變量/438
13.7 表達式樹/441
13.8 小結/447
第14章 事件/448
14.1 使用多播委托實現Publish-Subscribe模式/449
14.2 理解事件/460
14.3 小結/468
第15章 支持标準查詢操作符的集合接口/469
15.1 集合初始化器/470
15.2 IEnumerable使類成為集合/472
15.3 标準查詢操作符/476
15.4 匿名類型之于LINQ/503
15.5 小結/509
第16章 使用查詢表達式的LINQ/510
16.1 查詢表達式概述/510
16.2 查詢表達式只是方法調用/525
16.3 小結/526
第17章 構建自定義集合/528
17.1 更多集合接口/529
17.2 主要集合類/530
17.3 提供索引器/544
17.4 返回null或者空集合/547
17.5 迭代器/547
17.6 小結/559
第18章 反射、特性和動态編程/560
18.1 反射/560
18.2 nameof操作符/569
18.3 特性/571
18.4 使用動态對象進行編程/585
18.5 小結/592
第19章 多線程概述/594
19.1 多線程基礎/595
19.2 異步任務/600
19.3 取消任務/614
19.4 使用System.Threading/618
19.5 總結/619
第20章 基于任務的異步模式編程/620
20.1 同步執行高延遲操作/621
20.2 使用TPL實現異步執行高延遲操作/623
20.3 使用async/await實現基于任務的異步模式/627
20.4 異步返回值ValueTask/632
20.5 異步流/633
20.6 IAsyncDisposable接口以及awaitusing聲明和語句/637
20.7 使用LINQ和IAsync-Enumerable/637
20.8 返回void的異步方法/639
20.9 異步Lambda表達式和本地函數/642
20.10 任務調度器和同步上下文/647
20.11 在WindowsUI程序中使用async/await/649
20.12 小結/652
第21章 并行迭代/653
21.1 并行執行循環迭代/653
21.2 并行執行LINQ查詢/661
21.3 小結/666
第22章 線程同步/667
22.1 線程同步的意義/668
22.2 計時器/689
22.3 小結/691
第23章 平台互操作性和不安全代碼/692
23.1 平台調用/693
23.2 指針和地址/703
23.3 通過委托執行不安全代碼/710
23.4 小結/711
第24章 公共語言基礎結構/712
24.1 CLI的定義/712
24.2 CLI的實現/713
24.3 .NETStandard/715
24.4 基類庫/716
24.5 将C#編譯成機器碼/716
24.6 運行時/717
24.7 程序集、清單和模塊/720
24.8 公共中間語言/722
24.9 公共類型系統/722
24.10 公共語言規范/723
24.11 元數据/723
24.12 .NETNative和AOT編譯/724
24.13 小結/724
······