C# 7.0 本質論 (Essential C# 7.0)

[美] 馬克米凱利斯(Mark Michaelis)著

買這商品的人也買了...

商品描述

本書由世界級C#技術專家親筆撰寫,C#編譯器團隊開發人員技術審校,微軟公司C#項目經理作序推薦,10餘年全球暢銷不衰,廣受好評。
全書共22章。第1章是C#概述;第2章和第3章介紹C#中的數據類型;第4章討論操作符、數據轉換和預處理器指令;第5章探討方法和參數的細節;第6章講解類,它是面向對象技術的核心;第7章介紹繼承,其中包括繼承語法的細節;第8章講解接口;第9章和第10章分別介紹值類型與合式類型,解釋如何定義結構、如何實現操作符;第11章延伸討論第5章引入的異常處理機制;第12章探討泛型;第13章講解委托和Lambda表達式;第14章討論事件;第15章介紹支持標準查詢操作符的集合接口;第16章探討使用查詢表達式的LINQ;第17章講解如何構建自定義集合;第18章介紹反射、特性和動態編程的方方面面;第19章涵蓋多線程處理;第20章以第19章為基礎,演示線程同步的用法;第21章涵蓋平臺互操作性和不安全的代碼;第22章講解公共語言基礎結構,並討論C#程序與底層“運行時”及其規範的關系。

Mark非常聰明,善於打破砂鍋問到底,能深刻理解一種技術對於真正的開發人員的影響……他的文字直指技術的本質,敏銳地指出技術的真正價值和問題……沒人能像這位大師一樣幫你正確理解C# 7.0。
—— Mads Torgersen,微軟公司C# 項目經理

作為歷年來深受各層次開發人員歡迎的C#指南,本書討論了從C# 3.0到C# 7.0中最重要的C#特性,強調了現代編程模式,教你如何編寫簡潔、強大、健壯、安全且易於維護的C#代碼。
世界級C#專家Mark Michaelis對C#語言進行了全面而深入的探討,提供了針對關鍵C# 7.0增強、C# 7.0和.NET Core/.NET Standard的配合使用以及跨平臺編譯的專業論述。他用簡潔的例子闡釋了關鍵C#構造,並提供了大量優秀實踐編程規範,為你進行高效軟件開發打好基礎。

本書特色
深挖C# 7.0的諸多改進,包括元組、解構函數、模式匹配、本地函數和ref返回等
利用C#面向對象構造寫出更健壯的代碼
利用泛型、委托、Lambda表達式和事件降低代碼復雜度
利用C# 7.0跨平臺編譯在Linux或MacOS上運行代碼
全面掌握多線程處理和同步,包括async/await模式
包括C# 7.1/7.2/7.3語言增強

作者簡介

 

Mark Michaelis是高端軟件工程和諮詢公司IntelliTect的創辦者、首席技術架構師和培訓師。 Mark經常在開發者大會上發言,寫過許多文章和書籍,目前是《MSDN Magazine》的《Essential.NET》專欄作家。 從1996年起,他一直是C#、Visual Studio Team System和Windows SDK的MVP。 2007年被評選為微軟的Regional Director。他還服務於微軟的幾個軟件設計評審團隊,包括C#和VSTS。

目錄大綱

目錄

譯者序

推薦序

前言

致謝

作者簡介

第壹章C#概述/ 1

1.1 Hello, World / 1

1.2 C#語法基礎/ 8

1.3 使用變量/ 14

1.4 控制台輸入和輸出/ 17

1.5 註釋/ 20

1.6 託管執行和CLI / 22

1.7 多個.NET框架/ 26

1.8 小結/ 28

第2章數據類型/ 29

2.1 基本數值類型/ 29

2.2 更多基本類型/ 36

2.3 null和void / 46

2.4 數據類型轉換/ 47

2.5 小結/ 52

第3章更多數據類型/ 53

3.1 類型的劃分/ 53

3.2 可空修飾符/ 55

3.3 元組/ 57

3.4 數組/ 62

3.5 小結/ 74

第4章操作符和控制流程/ 75

4.1 操作符/ 75

4.2 控制流程概述/ 87

4.3 代碼塊({}) / 91

4.4 代碼塊、作用域和聲明空間/ 93

4.5 布爾表達式/ 94

4.6 按位操作符(>,|,&,^,~) / 101

4.7 控制流程語句(續) / 106

4.8 跳轉語句/ 115

4.9 C#預處理器指令/ 119

4.10 小結/ 124

第5章方法和參數/ 126

5.1 方法的調用/ 127

5.2 方法的聲明/ 131

5.3 using指令/ 135

5.4 Main的返回值和參數/ 139

5.5 高ji方法參數/ 141

5.6 遞歸/ 149

5.7 方法重載/ 152

5.8 可選參數/ 154

5.9 用異常實現基本錯誤處理/ 157

5.10 小結/ 168

第6章類/ 169

6.1 類的聲明和實例化/ 172

6.2 實例字段/ 174

6.3 實例方法/ 176

6.4 使用this關鍵字/ 177

6.5 訪問修飾符/ 183

6.6 屬性/ 184

6.7 構造函數/ 197

6.8 靜態成員/ 205

6.9 擴展方法/ 213

6.10 封裝數據/ 214

6.11 嵌套類/ 216

6.12 分部類/ 218

6.13 小結/ 222

第7章繼承/ 223

7.1 派生/ 224

7.2 重寫基類/ 232

7.3 抽像類/ 242

7.4 所有類都從System.Object派生/ 246

7.5 使用is操作符驗證基礎類型/ 247

7.6 用is操作符進行模式匹配/ 248

7.7 switch語句中的模式匹配/ 248

7.8 使用as操作符進行轉換/ 250

7.9 小結/ 251

第8章接口/ 252

8.1 接口概述/ 253

8.2 通過接口實現多態性/ 254

8.3 接口實現/ 258

8.4 在實現類和接口之間轉換/ 262

8.5 接口繼承/ 263

8.6 多接口繼承/ 265

8.7 接口上的擴展方法/ 265

8.8 通過接口實現多繼承/ 266

8.9 版本控制/ 269

8.10 比較接口和類/ 270

8.11 比較接口和特性/ 271

8.12 小結/ 271

第9章值類型/ 272

9.1 結構/ 275

9.2 裝箱/ 279

9.3 枚舉/ 285

9.4 小結/ 293

第壹0章合式類型/ 295

10.1 重寫object的成員/ 295

10.2 操作符重載/ 305

10.3 引用其他程序集/ 311

10.4 定義命名空間/ 318

10.5 XML註釋/ 320

10.6 垃圾回收/ 323

10.7 資源清理/ 325

10.8 推遲初始化/ 332

10.9 小結/ 333

第壹1章異常處理/ 334

11.1 多異常類型/ 334

11.2 捕捉異常/ 336

11.3 常規catch塊/ 339

11.4 異常處理規範/ 341

11.5 自定義異常/ 343

11.6 重新拋出包裝的異常/ 346

11.7 小結/ 349

第壹2章泛型/ 350

12.1 如果C#沒有泛型/ 350

12.2 泛型類型概述/ 355

12.3 約束/ 364

12.4 泛型方法/ 374

12.5 協變性和逆變性/ 377

12.6 泛型的內部機制/ 382

12.7 小結/ 385

第壹3章委託和Lambda表達式/ 386

13.1 委託概述/ 387

13.2 聲明委託類型/ 390

13.3 Lambda表達式/ 396

13.4 匿名方法/ 401

13.5 小結/ 413

第壹4章事件/ 414

14.1 使用多播委託編碼Publish-Subscribe模式/ 415

14.2 理解事件/ 426

14.3 小結/ 435

第壹5章支持標準查詢操作符的集合接口/ 436

15.1 集合初始化器/ 437

15.2 IEnumerable使類成為集合/ 439

15.3 標準查詢操作符/ 444

15.4 匿名類型之於LINQ / 470

15.5 小結/ 477

第壹6章使用查詢表達式的LINQ / 478

16.1 查詢表達式概述/ 478

16.2 查詢表達式只是方法調用/ 493

16.3 小結/ 494

第壹7章構建自定義集合/ 496

17.1 更多集合接口/ 497

17.2 主要集合類/ 498

17.3 提供索引器/ 512

17.4 返回null或者空集合/ 515

17.5 迭代器/ 515

17.6 小結/ 527

第壹8章反射、特性和動態編程/ 528

18.1 反射/ 528

18.2 特性/ 539

18.3 使用動態對象進行編程/ 557

18.4 小結/ 565

第壹9章多線程處理/ 566

19.1 多線程處理基礎/ 568

19.2 使用System.Threading / 572

19.3 異步任務/ 577

19.4 取消任務/ 591

19.5 基於任務的異步模式/ 596

19.6 並行迭代/ 618

19.7 並行執行LINQ查詢/ 626

19.8 小結/ 630

第20章線程同步/ 631

20.1 線程同步的意義/ 632

20.2 計時器/ 653

20.3 小結/ 655

第21章平台互操作性和不安全代碼/ 656

21.1 平台調用/ 657

21.2 指針和地址/ 667

21.3 通過委託執行不安全代碼/ 674

21.4 小結/ 676

第22章公共語言基礎結構/ 677

22.1 CLI的定義/ 677

22.2 CLI的實現/ 678

22.3 .NET Standard / 680

22.4 BCL / 681

22.5 將C#編譯成機器碼/ 681

22.6 運行時/ 682

22.7 程序集、清單和模塊/ 685

22.8 公共中間語言/ 687

22.9 公共類型系統/ 687

22.10 公共語言規範/ 688

22.11 元數據/ 688

22.12 .NET Native和AOT編譯/ 689

22.13 小結/ 689