書籍簡介:
★為需要新工具的高級(jí)開發(fā)人員介紹了C# 7和.NET Core 2.0的擴(kuò)展新特性 ★揭示了Visual Studio 2017的新技巧和切合實(shí)際的提示,包括新的用戶界面、新增的模板、編輯器的改進(jìn)等 ★論述了計(jì)劃工作流的全新方式,使編碼更快,診斷和調(diào)試更精確,測(cè)試更頻繁,發(fā)布更自信 ★為開發(fā)在Android、iOS、Windows、Linux、網(wǎng)絡(luò)和云上運(yùn)行的應(yīng)用程序提供了循序漸進(jìn)的指南 ★掌握Visual Studio的高效率特性,以加速AI革新
作者簡介:
Christian Nagel 是Visual Studio 和開發(fā)技術(shù)方向的Microsoft MVP,擔(dān)任微軟開
發(fā)技術(shù)代言人(Microsoft Regional Director)已經(jīng)超過15 年。Christian 是CN innovation公司的創(chuàng)始人,CN innovation 公司提供指導(dǎo)、培訓(xùn)、代碼評(píng)審,并協(xié)助使用微軟技術(shù)設(shè)計(jì)和開發(fā)解決方案。他擁有超過25 年的軟件開發(fā)經(jīng)驗(yàn)。
Christian Nagel 最初在Digital Equipment 公司通過PDP 11 和VAX / VMS 系統(tǒng)開始他的計(jì)算機(jī)職業(yè)生涯,接觸過各種語言和平臺(tái)。在2000 年,.NET 只有一個(gè)技術(shù)概覽版時(shí),他就開始使用各種技術(shù)建立.NET 解決方案。目前,他主要指導(dǎo)人們開發(fā)和設(shè)計(jì)Windows 應(yīng)用程序、ASP.NET Core Web 應(yīng)用程序和Xamarin,并幫助他們使用Microsoft Azure 服務(wù)產(chǎn)品。
在軟件開發(fā)領(lǐng)域工作多年以后,Christian 仍然熱愛學(xué)習(xí)和使用新技術(shù),并通過多種形式教別人如何使用新技術(shù)。他的Microsoft 技術(shù)知識(shí)非常淵博,編寫了很多書,擁有微軟認(rèn)證培訓(xùn)師(MCT)和微軟認(rèn)證解決方案開發(fā)專家(MCSD)認(rèn)證。Christian 經(jīng)常在國際會(huì)議(如Microsoft Ignite、BASTA!和TechDays)上發(fā)言。
出版日期:
2019年03月
章節(jié)目錄:
第 I 部分 C# 語 言
第1 章 .NET 應(yīng)用程序和工具 3
1.1 選擇技術(shù) 3
1.2 回顧.NET 歷史 4
1.2.1 C# 1.0——一種新語言 4
1.2.2 帶有泛型的C# 2 和.NET 2 6
1.2.3 .NET 3.0——Windows Presentation Foundation 6
1.2.4 C# 3 和.NET 3.5——LINQ 6
1.2.5 C# 4 和.NET 4.0——dynamic 和TPL 7
1.2.6 C# 5 和異步編程 7
1.2.7 C# 6 和.NET Core 1.0 8
1.2.8 C# 7 和.NET Core 2.0 8
1.2.9 選擇技術(shù),繼續(xù)前進(jìn) 9
1.3 .NET 術(shù)語 10
1.3.1 .NET Framework 11
1.3.2 .NET Core 11
1.3.3 .NET Standard 11
1.3.4 NuGet 包 12
1.3.5 名稱空間 12
1.3.6 公共語言運(yùn)行庫 13
1.3.7 Windows 運(yùn)行庫 13
1.4 用.NET Core CLI 編譯 14
1.4.1 設(shè)置環(huán)境 14
1.4.2 創(chuàng)建應(yīng)用程序 15
1.4.3 構(gòu)建應(yīng)用程序 16
1.4.4 運(yùn)行應(yīng)用程序 16
1.4.5 創(chuàng)建Web 應(yīng)用程序 17
1.4.6 發(fā)布應(yīng)用程序 17
1.5 使用Visual Studio 2017 19
1.6 應(yīng)用程序類型和技術(shù) 24
1.6.1 數(shù)據(jù)訪問 24
1.6.2 Windows 應(yīng)用程序 24
1.6.3 Xamarin 24
1.6.4 Web 應(yīng)用程序 25
1.6.5 Web API 25
1.6.6 WebHooks 和SignalR 25
1.6.7 Microsoft Azure 25
1.7 開發(fā)工具 26
1.7.1 Visual Studio Community 27
1.7.2 Visual Studio Professional 27
1.7.3 Visual Studio Enterprise 27
1.7.4 Visual Studio for Mac 27
1.7.5 Visual Studio Code 27
1.8 小結(jié) 27
第2 章 核心C# 29
2.1 C#基礎(chǔ) 29
2.2 變量 31
2.2.1 初始化變量 31
2.2.2 類型推斷 32
2.2.3 變量的作用域 33
2.2.4 常量 34
2.3 預(yù)定義數(shù)據(jù)類型 35
2.3.1 值類型和引用類型 35
2.3.2 .NET 類型 36
2.3.3 預(yù)定義的值類型 36
2.3.4 預(yù)定義的引用類型 40
2.4 程序流控制 42
2.4.1 條件語句 42
2.4.2 循環(huán) 44
2.4.3 跳轉(zhuǎn)語句 47
2.5 名稱空間 47
2.5.1 using 語句 48
2.5.2 名稱空間的別名 49
2.6 Main()方法 49
2.7 使用注釋 50
2.7.1 源文件中的內(nèi)部注釋 50
2.7.2 XML 文檔 51
2.8 C#預(yù)處理器指令 52
2.8.1 #define 和#undef 52
2.8.2 #if、#elif、#else 和#endif 52
2.8.3 #warning 和 # error 53
2.8.4 #region 和#endregion 53
2.8.5 #line 53
2.8.6 #pragma 54
2.9 C#編程準(zhǔn)則 54
2.9.1 關(guān)于標(biāo)識(shí)符的規(guī)則 54
2.9.2 用法約定 55
2.10 小結(jié) 58
第3 章 對(duì)象和類型 59
3.1 創(chuàng)建及使用類 60
3.2 類和結(jié)構(gòu) 60
3.3 類 61
3.3.1 字段 61
3.3.2 只讀字段 61
3.3.3 屬性 62
3.3.4 匿名類型 65
3.3.5 方法 66
3.3.6 構(gòu)造函數(shù) 69
3.4 結(jié)構(gòu) 73
3.4.1 結(jié)構(gòu)是值類型 74
3.4.2 只讀結(jié)構(gòu) 75
3.4.3 結(jié)構(gòu)和繼承 75
3.4.4 結(jié)構(gòu)的構(gòu)造函數(shù) 75
3.4.5 ref 結(jié)構(gòu) 76
3.5 按值和按引用傳遞參數(shù) 76
3.5.1 ref 參數(shù) 77
3.5.2 out 參數(shù) 77
3.5.3 in 參數(shù) 78
3.6 可空類型 79
3.7 枚舉類型 79
3.8 部分類 81
3.9 擴(kuò)展方法 83
3.10 Object 類 83
3.11 小結(jié) 84
第4 章 繼承 85
4.1 面向?qū)ο?85
4.2 繼承的類型 85
4.2.1 多重繼承 86
4.2.2 結(jié)構(gòu)和類 86
4.3 實(shí)現(xiàn)繼承 86
4.3.1 虛方法 87
4.3.2 多態(tài)性 88
4.3.3 隱藏方法 89
4.3.4 調(diào)用方法的基類版本 90
4.3.5 抽象類和抽象方法 90
4.3.6 密封類和密封方法 91
4.3.7 派生類的構(gòu)造函數(shù) 91
4.4 修飾符 93
4.4.1 訪問修飾符 93
4.4.2 其他修飾符 94
4.5 接口 94
4.5.1 定義和實(shí)現(xiàn)接口 95
4.5.2 派生的接口 97
4.6 is 和as 運(yùn)算符 98
4.7 小結(jié) 99
第5 章 泛型 100
5.1 泛型概述 100
5.1.1 性能 101
5.1.2 類型安全 102
5.1.3 二進(jìn)制代碼的重用 102
5.1.4 代碼的擴(kuò)展 102
5.1.5 命名約定 102
5.2 創(chuàng)建泛型類 103
5.3 泛型類的功能 105
5.3.1 默認(rèn)值 106
5.3.2 約束 106
5.3.3 繼承 108
5.3.4 靜態(tài)成員 108
5.4 泛型接口 109
5.4.1 協(xié)變和抗變 109
5.4.2 泛型接口的協(xié)變 110
5.4.3 泛型接口的抗變 111
5.5 泛型結(jié)構(gòu) 111
5.6 泛型方法 113
5.6.1 泛型方法示例 113
5.6.2 帶約束的泛型方法 114
5.6.3 帶委托的泛型方法 115
5.6.4 泛型方法規(guī)范 115
5.7 小結(jié) 116
第6 章 運(yùn)算符和類型強(qiáng)制轉(zhuǎn)換 117
6.1 運(yùn)算符和類型轉(zhuǎn)換 117
6.2 運(yùn)算符 118
6.2.1 運(yùn)算符的簡化操作 119
6.2.2 運(yùn)算符的優(yōu)先級(jí)和關(guān)聯(lián)性 125
6.3 使用二進(jìn)制運(yùn)算符 126
6.3.1 位的移動(dòng) 128
6.3.2 有符號(hào)數(shù)和無符號(hào)數(shù) 128
6.4 類型的安全性 129
6.4.1 類型轉(zhuǎn)換 130
6.4.2 裝箱和拆箱 132
6.5 比較對(duì)象的相等性 133
6.5.1 比較引用類型的相等性 133
6.5.2 比較值類型的相等性 134
6.6 運(yùn)算符重載 135
6.6.1 運(yùn)算符的工作方式 135
6.6.2 運(yùn)算符重載的示例:Vector 結(jié)構(gòu) 136
6.6.3 比較運(yùn)算符的重載 139
6.6.4 可以重載的運(yùn)算符 140
6.7 實(shí)現(xiàn)自定義的索引運(yùn)算符 141
6.8 用戶定義的類型強(qiáng)制轉(zhuǎn)換 142
6.8.1 實(shí)現(xiàn)用戶定義的類型強(qiáng)制轉(zhuǎn)換 143
6.8.2 多重類型強(qiáng)制轉(zhuǎn)換 147
6.9 小結(jié) 150
第7 章 數(shù)組 151
7.1 相同類型的多個(gè)對(duì)象 151
7.2 簡單數(shù)組 152
7.2.1 數(shù)組的聲明 152
7.2.2 數(shù)組的初始化 152
7.2.3 訪問數(shù)組元素 153
7.2.4 使用引用類型 153
7.3 多維數(shù)組 154
7.4 鋸齒數(shù)組 155
7.5 Array 類 156
7.5.1 創(chuàng)建數(shù)組 156
7.5.2 復(fù)制數(shù)組 156
7.5.3 排序 157
7.6 數(shù)組作為參數(shù) 159
7.7 數(shù)組協(xié)變 159
7.8 枚舉 160
7.8.1 IEnumerator 接口 160
7.8.2 foreach 語句 160
7.8.3 yield 語句 161
7.9 結(jié)構(gòu)比較 164
7.10 Span 165
7.10.1 創(chuàng)建切片 166
7.10.2 使用Span 改變值 166
7.10.3 只讀的Span 167
7.11 數(shù)組池 167
7.11.1 創(chuàng)建數(shù)組池 168
7.11.2 從池中租用內(nèi)存 168
7.11.3 將內(nèi)存返回給池 168
7.12 小結(jié) 169
第8 章 委托、lambda 表達(dá)式和事件 170
8.1 引用方法 170
8.2 委托 170
8.2.1 聲明委托 171
8.2.2 使用委托 172
8.2.3 簡單的委托示例 174
8.2.4 Action和Func委托 175
8.2.5 BubbleSorter 示例 176
8.2.6 多播委托 177
8.2.7 匿名方法 180
8.3 lambda 表達(dá)式 181
8.3.1 參數(shù) 181
8.3.2 多行代碼 181
8.3.3 閉包 182
8.4 事件 182
8.4.1 事件發(fā)布程序 182
8.4.2 事件偵聽器 184
8.5 小結(jié) 185
第9 章 字符串和正則表達(dá)式 186
9.1 System.String 類 187
9.1.1 構(gòu)建字符串 188
9.1.2 StringBuilder 成員 190
9.2 字符串格式 190
9.2.1 字符串插值 191
9.2.2 日期時(shí)間和數(shù)字的格式 192
9.2.3 自定義字符串格式 193
9.3 正則表達(dá)式 194
9.3.1 正則表達(dá)式概述 194
9.3.2 RegularExpressionsPlayground 示例 195
9.3.3 顯示結(jié)果 197
9.3.4 匹配、組和捕獲 198
9.4 字符串和Span 200
9.5 小結(jié) 201
第10 章 集合 202
10.1 概述 202
10.2 集合接口和類型 203
10.3 列表 203
10.3.1 創(chuàng)建列表 204
10.3.2 只讀集合 210
10.4 隊(duì)列 210
10.5 棧 213
10.6 鏈表 214
10.7 有序列表 217
10.8 字典 219
10.8.1 字典初始化器 219
10.8.2 鍵的類型 219
10.8.3 字典示例 220
10.8.4 Lookup 類 223
10.8.5 有序字典 223
10.9 集 224
10.10 性能 225
10.11 小結(jié) 227
第11 章 特殊的集合 228
11.1 概述 228
11.2 處理位 228
11.2.1 BitArray 類 229
11.2.2 BitVector32 結(jié)構(gòu) 230
11.3 可觀察的集合 232
11.4 不變的集合 233
11.4.1 使用構(gòu)建器和不變的集合 235
11.4.2 不變集合類型和接口 235
11.4.3 使用LINQ 和不變的數(shù)組 236
11.5 并發(fā)集合 236
11.5.1 創(chuàng)建管道 237
11.5.2 使用BlockingCollection 239
11.5.3 使用ConcurrentDictionary 240
11.5.4 完成管道 241
11.6 小結(jié) 242
第12 章 LINQ 243
12.1 LINQ 概述 243
12.1.1 列表和實(shí)體 244
12.1.2 LINQ 查詢 246
12.1.3 擴(kuò)展方法 246
12.1.4 推遲查詢的執(zhí)行 248
12.2 標(biāo)準(zhǔn)的查詢操作符 249
12.2.1 篩選 250
12.2.2 用索引篩選 251
12.2.3 類型篩選 252
12.2.4 復(fù)合的from 子句 252
12.2.5 排序 253
12.2.6 分組 254
12.2.7 LINQ 查詢中的變量 255
12.2.8 對(duì)嵌套的對(duì)象分組 255
12.2.9 內(nèi)連接 256
12.2.10 左外連接 258
12.2.11 組連接 260
12.2.12 集合操作 262
12.2.13 合并 263
12.2.14 分區(qū) 264
12.2.15 聚合操作符 264
12.2.16 轉(zhuǎn)換操作符 266
12.2.17 生成操作符 267
12.3 并行LINQ 267
12.3.1 并行查詢 268
12.3.2 分區(qū)器 268
12.3.3 取消 269
12.4 表達(dá)式樹 269
12.5 LINQ 提供程序 271
12.6 小結(jié) 272
第13 章 C#函數(shù)式編程 273
13.1 概述 273
13.1.1 避免狀態(tài)突變 274
13.1.2 函數(shù)作為第一個(gè)類 275
13.2 表達(dá)式體的成員 275
13.3 擴(kuò)展方法 276
13.4 using static 聲明 277
13.5 本地函數(shù) 278
13.5.1 本地函數(shù)與yield 語句 279
13.5.2 遞歸本地函數(shù) 281
13.6 元組 282
13.6.1 元組的聲明和初始化 282
13.6.2 元組解構(gòu) 283
13.6.3 元組的返回 283
13.6.4 幕后的原理 284
13.6.5 ValueTuple 與元組的兼容性 285
13.6.6 推斷出元組名稱 285
13.6.7 元組與鏈表 286
13.6.8 元組和LINQ 286
13.6.9 解構(gòu) 287
13.6.10 解構(gòu)與擴(kuò)展方法 288
13.7 模式匹配 288
13.7.1 模式匹配與is 運(yùn)算符 288
13.7.2 模式匹配與switch 語句 290
13.7.3 模式匹配與泛型 291
13.8 小結(jié) 291
第14 章 錯(cuò)誤和異常 292
14.1 簡介 292
14.2 異常類 293
14.3 捕獲異常 294
14.3.1 異常和性能 296
14.3.2 實(shí)現(xiàn)多個(gè)catch 塊 296
14.3.3 在其他代碼中捕獲異常 299
14.3.4 System.Exception 屬性 299
14.3.5 異常過濾器 299
14.3.6 重新拋出異常 300
14.3.7 沒有處理異常時(shí)發(fā)生的情況 303
14.4 用戶定義的異常類 303
14.4.1 捕獲用戶定義的異常 304
14.4.2 拋出用戶定義的異常 305
14.4.3 定義用戶定義的異常類 307
14.5 調(diào)用者信息 309
14.6 小結(jié) 310
第15 章 異步編程 311
15.1 異步編程的重要性 311
15.2 異步編程的.NET 歷史 312
15.2.1 同步調(diào)用 312
15.2.2 異步模式 313
15.2.3 基于事件的異步模式 314
15.2.4 基于任務(wù)的異步模式 314
15.2.5 異步Main()方法 315
15.3 異步編程的基礎(chǔ) 315
15.3.1 創(chuàng)建任務(wù) 316
15.3.2 調(diào)用異步方法 316
15.3.3 使用Awaiter 317
15.3.4 延續(xù)任務(wù) 317
15.3.5 同步上下文 318
15.3.6 使用多個(gè)異步方法 318
15.3.7 使用ValueTasks 319
15.3.8 轉(zhuǎn)換異步模式 320
15.4 錯(cuò)誤處理 320
15.4.1 異步方法的異常處理 321
15.4.2 多個(gè)異步方法的異常處理 321
15.4.3 使用AggregateException 信息 322
15.5 異步與Windows 應(yīng)用程序 322
15.5.1 配置await 323
15.5.2 切換到UI 線程 324
15.5.3 使用IAsyncOperation 325
15.5.4 避免阻塞情況 325
15.6 小結(jié) 325
封面圖: