持续畅销20年的《C#高级编程》出第11版了!
TA是誰?
Wrox精品紅皮書,
引領無數程序員進入程序開發殿堂,
C#專家級指南,
是經驗豐富的程序員提高效率的更快捷方式,
?
連續暢銷20年,累計銷量超30萬冊。
TA出生名門:
? ? ??
?
?TA戰績輝煌:
2019新的征程:
第11次全新升級,更新至C#7?和?.NET Core 2.0
?
C#?7內幕指南,
發布為NuGet包的每個.NET Core部分都進行了更新,
展示如何將.NET引入非微軟平臺,如何操作工具。
TA的行業贊譽:
目錄(上下滑動顯示更多內容)
第 I 部分 C# 語 言
第1 章 .NET 應用程序和工具 ? 3
1.1 選擇技術 ? 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 選擇技術,繼續前進 ? ?9
1.3 .NET 術語 ? ?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 公共語言運行庫 ? 13
1.3.7 Windows 運行庫 ? 13
1.4 用.NET Core CLI 編譯 ?14
1.4.1 設置環境 ? 14
1.4.2 創建應用程序 ? 15
1.4.3 構建應用程序 ? 16
1.4.4 運行應用程序 ? 16
1.4.5 創建Web 應用程序 ? 17
1.4.6 發布應用程序 ? 17
1.5 使用Visual Studio 2017 ? 19
1.6 應用程序類型和技術 ? 24
1.6.1 數據訪問 ? 24
1.6.2 Windows 應用程序 ? 24
1.6.3 Xamarin ? ?24
1.6.4 Web 應用程序 ? ?25
1.6.5 Web API ? ? 25
1.6.6 WebHooks 和SignalR ? 25
1.6.7 Microsoft Azure ? ? 25
1.7 開發工具 ? ?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 小結 ? ?27
第2 章 核心C# ? 29
2.1 C#基礎 ? ? 29
2.2 變量 ? ?31
2.2.1 初始化變量 ? ?31
2.2.2 類型推斷 ? ?32
2.2.3 變量的作用域 ? ?33
2.2.4 常量 ? ?34
2.3 預定義數據類型 ? ? 35
2.3.1 值類型和引用類型 ? ?35
2.3.2 .NET 類型 ? ? 36
2.3.3 預定義的值類型 ? ?36
2.3.4 預定義的引用類型 ? 40
2.4 程序流控制 ? ?42
2.4.1 條件語句 ? ?42
2.4.2 循環 ? ?44
2.4.3 跳轉語句 ? ?47
2.5 名稱空間 ? ?47
2.5.1 using 語句 ? ?48
2.5.2 名稱空間的別名 ? ?49
2.6 Main()方法 ? ?49
2.7 使用注釋 ? ?50
2.7.1 源文件中的內部注釋 ? 50
2.7.2 XML 文檔 ? ? 51
2.8 C#預處理器指令 ? ?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#編程準則 ? ?54
2.9.1 關于標識符的規則 ? ?54
2.9.2 用法約定 ? ?55
2.10 小結 ? ? ? 58
第3 章 對象和類型 ? 59
3.1 創建及使用類 ? ? 60
3.2 類和結構 ? ?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 構造函數 ? ?69
3.4 結構 ? ?73
3.4.1 結構是值類型 ? ? 74
3.4.2 只讀結構 ? ?75
3.4.3 結構和繼承 ? ?75
3.4.4 結構的構造函數 ? ?75
3.4.5 ref 結構 ? ? 76
3.5 按值和按引用傳遞參數 ? 76
3.5.1 ref 參數 ? ? 77
3.5.2 out 參數 ? ?77
3.5.3 in 參數 ? ?78
3.6 可空類型 ? ?79
3.7 枚舉類型 ? ?79
3.8 部分類 ? ? 81
3.9 擴展方法 ? ?83
3.10 Object 類 ? ?83
3.11 小結 ? ?84
第4 章 繼承 ? 85
4.1 面向對象 ? ?85
4.2 繼承的類型 ? ?85
4.2.1 多重繼承 ? ?86
4.2.2 結構和類 ? ?86
4.3 實現繼承 ? ?86
4.3.1 虛方法 ? ?87
4.3.2 多態性 ? ?88
4.3.3 隱藏方法 ? ?89
4.3.4 調用方法的基類版本 ? ?90
4.3.5 抽象類和抽象方法 ? 90
4.3.6 密封類和密封方法 ? 91
4.3.7 派生類的構造函數 ? 91
4.4 修飾符 ? ? ?93
4.4.1 訪問修飾符 ? ? 93
4.4.2 其他修飾符 ? ? 94
4.5 接口 ? ?94
4.5.1 定義和實現接口 ? ? 95
4.5.2 派生的接口 ? ? 97
4.6 is 和as 運算符 ? ?98
4.7 小結 ? ?99
第5 章 泛型 ? ?100
5.1 泛型概述 ? ? 100
5.1.1 性能 ? ?101
5.1.2 類型安全 ? ?102
5.1.3 二進制代碼的重用 ? ?102
5.1.4 代碼的擴展 ? ?102
5.1.5 命名約定 ? ?102
5.2 創建泛型類 ? ?103
5.3 泛型類的功能 ? ?105
5.3.1 默認值 ? ?106
5.3.2 約束 ? ?106
5.3.3 繼承 ? ?108
5.3.4 靜態成員 ? ?108
5.4 泛型接口 ? ? 109
5.4.1 協變和抗變 ? ?109
5.4.2 泛型接口的協變 ? 110
5.4.3 泛型接口的抗變 ? 111
5.5 泛型結構 ? 111
5.6 泛型方法 ? 113
5.6.1 泛型方法示例 ? 113
5.6.2 帶約束的泛型方法 ? ?114
5.6.3 帶委托的泛型方法 ? ?115
5.6.4 泛型方法規范 ? ? ? 115
5.7 小結 ? ?116
第6 章 運算符和類型強制轉換 ? 117
6.1 運算符和類型轉換 ? ?117
6.2 運算符 ? 118
6.2.1 運算符的簡化操作 ? ? ?119
6.2.2 運算符的優先級和關聯性 ? ? 125
6.3 使用二進制運算符 ? ? ? ?126
6.3.1 位的移動 ? ? ? ? ? ?128
6.3.2 有符號數和無符號數 ? ?128
6.4 類型的安全性 ? ? ? 129
6.4.1 類型轉換 ? ? ? ? ? 130
6.4.2 裝箱和拆箱 ? ? ? ? 132
6.5 比較對象的相等性 ? ?133
6.5.1 比較引用類型的相等性 ? 133
6.5.2 比較值類型的相等性 ? ? 134
6.6 運算符重載 ? ? ? ?135
6.6.1 運算符的工作方式 ? ? ? 135
6.6.2 運算符重載的示例:Vector 結構 ? ? 136
6.6.3 比較運算符的重載 ? ? ? 139
6.6.4 可以重載的運算符 ? ? ? 140
6.7 實現自定義的索引運算符 ? ? 141
6.8 用戶定義的類型強制轉換 ? ? 142
6.8.1 實現用戶定義的類型強制轉換 ? ? 143
6.8.2 多重類型強制轉換 ? ? ? 147
6.9 小結 ? ? ? 150
第7 章 數組 ? ? 151
7.1 相同類型的多個對象 ? ?151
7.2 簡單數組 ? 152
7.2.1 數組的聲明 ? 152
7.2.2 數組的初始化 ? 152
7.2.3 訪問數組元素 ? 153
7.2.4 使用引用類型 ? 153
7.3 多維數組 ? 154
7.4 鋸齒數組 ? 155
7.5 Array 類 ? 156
7.5.1 創建數組 ? 156
7.5.2 復制數組 ? 156
7.5.3 排序 ? ? ?157
7.6 數組作為參數 ? 159
7.7 數組協變 ? 159
7.8 枚舉 ? 160
7.8.1 IEnumerator 接口 ? ? 160
7.8.2 foreach 語句 ? ? 160
7.8.3 yield 語句 ? 161
7.9 結構比較 ? 164
7.10 Span ? ? ?165
7.10.1 創建切片 ? 166
7.10.2 使用Span 改變值 ? ?166
7.10.3 只讀的Span ? ?167
7.11 數組池 ? ? 167
7.11.1 創建數組池 ? ? 168
7.11.2 從池中租用內存 ? ?168
7.11.3 將內存返回給池 ? ?168
7.12 小結 ? ? ? 169
第8 章 委托、lambda 表達式和事件 ? ?170
8.1 引用方法 ? ? ? ?170
8.2 委托 ? ?170
8.2.1 聲明委托 ? ?171
8.2.2 使用委托 ? ?172
8.2.3 簡單的委托示例 ? ?174
8.2.4 Action<T>和Func<T>委托 ? ? 175
8.2.5 BubbleSorter 示例 ? ? ?176
8.2.6 多播委托 ? ?177
8.2.7 匿名方法 ? ?180
8.3 lambda 表達式 ? ?181
8.3.1 參數 ? ? ?181
8.3.2 多行代碼 ? ?181
8.3.3 閉包 ? ? 182
8.4 事件 ? ? 182
8.4.1 事件發布程序 ? ?182
8.4.2 事件偵聽器 ? ?184
8.5 小結 ? ?185
第9 章 字符串和正則表達式 186
9.1 System.String 類 ? ?187
9.1.1 構建字符串 ? ?188
9.1.2 StringBuilder 成員 ? 190
9.2 字符串格式 ? ? ? 190
9.2.1 字符串插值 ? ? ? ?191
9.2.2 日期時間和數字的格式 ? ?192
9.2.3 自定義字符串格式 ? ? 193
9.3 正則表達式 ? ? ?194
9.3.1 正則表達式概述 ? ?194
9.3.2 RegularExpressionsPlayground 示例 ? ?195
9.3.3 顯示結果 ? ?197
9.3.4 匹配、組和捕獲 ? ?198
9.4 字符串和Span ? ?200
9.5 小結 ? ?201
第10 章 集合 ? ? 202
10.1 概述 ? ? 202
10.2 集合接口和類型 ? ?203
10.3 列表 ? ? 203
10.3.1 創建列表 ? ?204
10.3.2 只讀集合 ? ?210
10.4 隊列 ? ? 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 小結 ? ?227
第11 章 特殊的集合 ? 228
11.1 概述 ? ? 228
11.2 處理位 ? ?228
11.2.1 BitArray 類 ? ?229
11.2.2 BitVector32 結構 ? 230
11.3 可觀察的集合 ? ? 232
11.4 不變的集合 ? ? 233
11.4.1 使用構建器和不變的集合 ? ?235
11.4.2 不變集合類型和接口 ? ? ?235
11.4.3 使用LINQ 和不變的數組 ? 236
11.5 并發集合 ? ?236
11.5.1 創建管道 ? ?237
11.5.2 使用BlockingCollection ? 239
11.5.3 使用ConcurrentDictionary ? 240
11.5.4 完成管道 ? ?241
11.6 小結 ? ? 242
第12 章 LINQ ? 243
12.1 LINQ 概述 ? ?243
12.1.1 列表和實體 ? ?244
12.1.2 LINQ 查詢 ? ?246
12.1.3 擴展方法 ? ?246
12.1.4 推遲查詢的執行 ? ?248
12.2 標準的查詢操作符 249
12.2.1 篩選 ? ?250
12.2.2 用索引篩選 ? ?251
12.2.3 類型篩選 ? ?252
12.2.4 復合的from 子句 ? 252
12.2.5 排序 ? ?253
12.2.6 分組 ? ?254
12.2.7 LINQ 查詢中的變量 ? ? 255
12.2.8 對嵌套的對象分組 ? ? ?255
12.2.9 內連接 ? ? ?256
12.2.10 左外連接 ? ? 258
12.2.11 組連接 ? ? ?260
12.2.12 集合操作 ? ? 262
12.2.13 合并 ? ? 263
12.2.14 分區 ? ? 264
12.2.15 聚合操作符 ? ?264
12.2.16 轉換操作符 ? ?266
12.2.17 生成操作符 ? ?267
12.3 并行LINQ ? ? 267
12.3.1 并行查詢 ? ?268
12.3.2 分區器 ? ?268
12.3.3 取消 ? ?269
12.4 表達式樹 ? ?269
12.5 LINQ 提供程序 ? ? 271
12.6 小結 ? ? 272
第13 章 C#函數式編程 ? 273
13.1 概述 ? ? 273
13.1.1 避免狀態突變 ? ? 274
13.1.2 函數作為第一個類 ? ? 275
13.2 表達式體的成員 ? ?275
13.3 擴展方法 ? ?276
13.4 using static 聲明 ? ? 277
13.5 本地函數 ? ?278
13.5.1 本地函數與yield 語句 ? ?279
13.5.2 遞歸本地函數 ? ? 281
13.6 元組 ? ? ?282
13.6.1 元組的聲明和初始化 ? ?282
13.6.2 元組解構 ? ?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 解構 ? ?287
13.6.10 解構與擴展方法 ? ?288
13.7 模式匹配 ? ? ? ?288
13.7.1 模式匹配與is 運算符 ? ?288
13.7.2 模式匹配與switch 語句 ? 290
13.7.3 模式匹配與泛型 ? ? ?291
13.8 小結 ? ?291
第14 章 錯誤和異常 ? ? 292
14.1 簡介 ? ?292
14.2 異常類 ? 293
14.3 捕獲異常 ? 294
14.3.1 異常和性能 ? 296
14.3.2 實現多個catch 塊 ? ?296
14.3.3 在其他代碼中捕獲異常 ? ?299
14.3.4 System.Exception 屬性 ? ?299
14.3.5 異常過濾器 ? ? ? ?299
14.3.6 重新拋出異常 ? ? ? 300
14.3.7 沒有處理異常時發生的情況 ? ? 303
14.4 用戶定義的異常類 ? ? 303
14.4.1 捕獲用戶定義的異常 ? ? ?304
14.4.2 拋出用戶定義的異常 ? ? ?305
14.4.3 定義用戶定義的異常類 ? ?307
14.5 調用者信息 ? ? ? ?309
14.6 小結 ? ?310
第15 章 異步編程 ? ? ?311
15.1 異步編程的重要性 ? 311
15.2 異步編程的.NET 歷史 ? ?312
15.2.1 同步調用 ? ? ?312
15.2.2 異步模式 ? ? ?313
15.2.3 基于事件的異步模式 ? ? 314
15.2.4 基于任務的異步模式 ? ? 314
15.2.5 異步Main()方法 ? ? 315
15.3 異步編程的基礎 ? 315
15.3.1 創建任務 ? 316
15.3.2 調用異步方法 ? ? 316
15.3.3 使用Awaiter ? ? ?317
15.3.4 延續任務 ? 317
15.3.5 同步上下文 ? 318
15.3.6 使用多個異步方法 ? ?318
15.3.7 使用ValueTasks ? ? 319
15.3.8 轉換異步模式 ? ? ?320
15.4 錯誤處理 ? ? ? 320
15.4.1 異步方法的異常處理 ? ? 321
15.4.2 多個異步方法的異常處理 ? ?321
15.4.3 使用AggregateException 信息 ? 322
15.5 異步與Windows 應用程序 ? 322
15.5.1 配置await ? ? 323
15.5.2 切換到UI 線程 ? ? 324
15.5.3 使用IAsyncOperation ? 325
15.5.4 避免阻塞情況 ? ? ?325
15.6 小結 ? ? ? 325
第16 章 反射、元數據和動態編程 ? ?326
16.1 在運行期間檢查代碼和動態編程 ? 326
16.2 自定義特性 ? ? ? 327
16.2.1 編寫自定義特性 ? ? 327
16.2.2 自定義特性示例:WhatsNewAttributes ? 330
16.3 反射 ? ? 331
16.3.1 System.Type 類 ? ?332
16.3.2 TypeView 示例 ? ?333
16.3.3 Assembly 類 ? ? ?335
16.3.4 完成WhatsNewAttributes 示例 ? ?336
16.4 為反射使用動態語言擴展 ? ? 339
16.4.1 創建Calculator 庫 ? ?339
16.4.2 動態實例化類型 ? ? 339
16.4.3 用Reflection API 調用成員 ? ?340
16.4.4 使用動態類型調用成員 ? ?340
16.5 dynamic 類型 ? ?341
16.6 DynamicObject 和ExpandoObject概述 ? ?344
16.6.1 DynamicObject ? 344
16.6.2 ExpandoObject ? ?345
16.7 小結 ? ? 347
第17 章 托管和非托管內存 ? 348
17.1 內存 ? ? 348
17.2 后臺內存管理 ? ? 349
17.2.1 值數據類型 ? ?349
17.2.2 引用數據類型 ? 350
17.2.3 垃圾收集 ? ? ? 352
17.3 強引用和弱引用 ? ?354
17.4 處理非托管的資源 ?354
17.4.1 析構函數或終結器 ? ? 355
17.4.2 IDisposable 接口 ? ? 356
17.4.3 using 語句 ? ? ? ?356
17.4.4 實現IDisposable 接口和析構函數 ? ?357
17.4.5 IDisposable 和終結器的規則 ? ? 358
17.5 不安全的代碼 ? ? ?358
17.5.1 用指針直接訪問內存 ? ?358
17.5.2 指針示例:PointerPlayground ? 364
17.5.3 使用指針優化性能 ? ? ?367
17.6 引用的語義 ? ? 369
17.6.1 傳遞ref 和返回ref ? ?371
17.6.2 ref 和數組 ? ? 371
17.7 Span<T> ? ? 373
17.7.1 Span 引用托管堆 ? 373
17.7.2 Span 引用棧 ? ? ? 373
17.7.3 Span 引用本機堆 ? ?374
17.7.4 Span 擴展方法 ? ? ?374
17.8 平臺調用 ? ? ?375
17.9 小結 ? ? ? ?378
第18 章 Visual Studio 2017 ? ? 379
18.1 使用Visual Studio 2017 ? ? 379
18.1.1 Visual Studio 的版本 ? ? ? 382
18.1.2 Visual Studio 設置 ? ? ? ?382
18.2 創建項目 ? ? ? ? ? ? 383
18.2.1 面向多個版本的.NET ? ? 384
18.2.2 選擇項目類型 ? ? ? ? 385
18.3 瀏覽并編寫項目 ? ? ?388
18.3.1 Solution Explorer ? ? 388
18.3.2 使用代碼編輯器 ? ? 394
18.3.3 學習和理解其他窗口 ? 399
18.3.4 排列窗口 ? ? ?402
18.4 構建項目 ? ? 402
18.4.1 構建、編譯和生成代碼 ? ?403
18.4.2 調試版本和發布版本 ? ? 403
18.4.3 選擇配置 ? ? 404
18.4.4 編輯配置 ? ? 404
18.5 調試代碼 ? ? 406
18.5.1 設置斷點 ? ? 407
18.5.2 使用數據提示和調試器可視化工具 ? ?407
18.5.3 Live Visual Tree ? ? 408
18.5.4 監視和修改變量 ? ? 409
18.5.5 異常 ? ? ?409
18.5.6 多線程 ? ?410
18.6 重構工具 ? ?411
18.7 診斷工具 ? ?412
18.8 通過Docker 創建和使用容器 ? ?415
18.8.1 Docker 簡介 ? ?416
18.8.2 在Docker 容器中運行ASP .NET Core ? 416
18.8.3 創建Dockerfile ? ?417
18.8.4 使用Visual Studio ? ?418
18.9 小結 ? ? 420
第II 部分 .NET Core 與Windows Runtime
第19 章 庫、程序集、包和NuGet ? ? ?423
19.1 庫的地獄 ? ?423
19.2 程序集 ? ?425
19.3 創建庫 ? ?426
19.3.1 .NET 標準 ? ?427
19.3.2 創建.NET 標準庫 ? ?428
19.3.3 解決方案文件 ? ? 428
19.3.4 引用項目 ? ? ? 429
19.3.5 引用NuGet 包 ? ?429
19.3.6 NuGet 的來源 ? ? 430
19.3.7 使用.NET Framework 庫 ? ?431
19.4 使用共享項目 ? ? ? 433
19.5 創建NuGet 包 ? ? ? 435
19.5.1 NuGet 包和命令行 ? ? ?435
19.5.2 支持多個平臺 ? ? ? ? 435
19.5.3 NuGet 包與Visual Studio ? 436
19.6 小結 ? ? 438
第20 章 依賴注入 ? 439
20.1 依賴注入的概念 ? ?439
20.1.1 使用沒有依賴注入的服務 ? ?440
20.1.2 使用依賴注入 ? ? ? ?441
20.2 使用.NET Core DI 容器 ? 442
20.3 服務的生命周期 ? ?443
20.3.1 使用單例和臨時服務 ? 445
20.3.2 使用Scoped 服務 ? ? ?446
20.3.3 使用自定義工廠 ? ? ?448
20.4 使用選項初始化服務 ? 449
20.5 使用配置文件 ? ? ?450
20.6 創建平臺獨立性 ? ?452
20.6.1 .NET 標準庫 ? ? ? ? 452
20.6.2 WPF 應用程序 ? ? ? 453
20.6.3 UWP 應用程序 ? ? ? 454
20.6.4 Xamarin 應用程序 ? ? 455
20.7 使用其他DI 容器 ? ?456
20.8 小結 ? ? ? ? ? ? ? ?457
第21 章 任務和并行編程 ? 458
21.1 概述 ? ? ? ? ? ? ? 459
21.2 Parallel 類 ? ? ? ? ? ?460
21.2.1 使用Parallel.For()方法循環 ? 460
21.2.2 提前中斷Parallel.For ? ? ?462
21.2.3 Parallel.For()方法的初始化 ? ?462
21.2.4 使用Parallel.ForEach()方法循環 ? ?463
21.2.5 通過Parallel.Invoke()方法調用多個方法 ? 464
21.3 任務 ? ? ? 464
21.3.1 啟動任務 ? 464
21.3.2 Future——任務的結果 ? ? 466
21.3.3 連續的任務 ? ? ?467
21.3.4 任務層次結構 ? ? 468
21.3.5 從方法中返回任務 ? ?468
21.3.6 等待任務 ? ? 468
21.4 取消架構 ? ? 470
21.4.1 Parallel.For()方法的取消 ? ? 470
21.4.2 任務的取消 ? ? ? 471
21.5 數據流 ? ? ? 472
21.5.1 使用動作塊 ? ?472
21.5.2 源和目標數據塊 ? ? 473
21.5.3 連接塊 ? ? 474
21.6 Timer 類 ? ?475
21.7 線程問題 ? ?477
21.7.1 爭用條件 ? ?477
21.7.2 死鎖 ? ? ? 479
21.8 lock 語句和線程安全 ? ?480
21.9 Interlocked 類 ? ?483
21.10 Monitor 類 ? ? ?484
21.11 SpinLock 結構 ? ?485
21.12 WaitHandle 基類 ? ?485
21.13 Mutex 類 ? ?485
21.14 Semaphore 類 ? ?486
21.15 Events 類 ? ?487
21.16 Barrier 類 ? ?490
21.17 ReaderWriterLockSlim 類 ? ?492
21.18 Lock 和await ? 494
21.19 小結 ? ? ? ? ? 496
第22 章 文件和流 ? ?497
22.1 概述 ? ? ? ? ? ?498
22.2 管理文件系統 ? ?498
22.2.1 檢查驅動器信息 ? ?499
22.2.2 使用Path 類 ? ? ? 500
22.2.3 創建文件和文件夾 ? 500
22.2.4 訪問和修改文件屬性 ? ?501
22.2.5 使用File 執行讀寫操作 ? 502
22.3 枚舉文件 ? ? ? ? ? ?503
22.4 使用流 ? ? ? ? ? ? ? 504
22.4.1 使用文件流 ? ? ? 505
22.4.2 讀取流 ? ? ? ? ?508
22.4.3 寫入流 ? ? ? ? ?508
22.4.4 復制流 ? ? ? ? ?509
22.4.5 隨機訪問流 ? ? ? 509
22.4.6 使用緩存的流 ? ? 510
22.5 使用讀取器和寫入器 ? ? ? ? ? ? ? 511
22.5.1 StreamReader 類 ? ?511
22.5.2 StreamWriter 類 ? ?512
22.5.3 讀寫二進制文件 ? ?512
22.6 壓縮文件 ? ? ? ? ? ? 513
22.6.1 使用壓縮流 ? ? ? 514
22.6.2 使用Brotli ? ? ? ?514
22.6.3 壓縮文件 ? ? ? ? 515
22.7 觀察文件的更改 ? ? ? 515
22.8 使用內存映射的文件 ? ? ? ? ? ? ? 516
22.8.1 使用訪問器創建內存映射文件 ? ? ?517
22.8.2 使用流創建內存映射文件 ? ? ? ? 518
22.9 使用管道通信 ? ? ? ? 520
22.9.1 創建命名管道服務器 ? ? ? ? ? ?520
22.9.2 創建命名管道客戶端 ? ? ? ? ? ?521
22.9.3 創建匿名管道 ? ? 522
22.10 通過Windows 運行庫使用文件和流 ? ? ? ? ? ?523
22.10.1 Windows App 編輯器 ? ? ? ? ?523
22.10.2 把Windows Runtime 類型映射為.NET 類型 ? ? ?525
22.11 小結 ? ? ? ? ? ? ? ?526
第23 章 網絡 ? ? ? ? ? ? ? ? 527
23.1 概述 ? ? ? ? ? ? ? ? 527
23.2 HttpClient 類 ? ? ? ? ?528
23.2.1 發出異步的Get 請求 ? ? ? ? ? ?528
23.2.2 拋出異常 ? ? ? ? 529
23.2.3 傳遞標題 ? ? ? ? 529
23.2.4 訪問內容 ? ? ? ? 531
23.2.5 用HttpMessageHandler 自定義請求 ? 531
23.2.6 使用SendAsync 創建HttpRequestMessage ? ? ? ? ? ? ?532
23.2.7 使用HttpClient和Windows Runtime ? ?532
23.3 使用WebListener 類 ? ?534
23.4 使用實用工具類 ? ? ? 536
23.4.1 URI ? ? ? ? ? ? 537
23.4.2 IPAddress ? ? ? ? 538
23.4.3 IPHostEntry ? ? ? ?538
23.4.4 Dns ? ? ? ? ? ? 539
23.5 使用TCP ? ? ? ? ? ? 540
23.5.1 使用TCP 創建HTTP 客戶程序 ? ? 540
23.5.2 創建TCP 偵聽器 ? ? ? ? ? ? ? 541
23.5.3 創建TCP 客戶端 ? ? ? ? ? ? ? 547
23.5.4 TCP 和UDP ? ? ? 550
23.6 使用UDP ? ? ? ? ? ? 550
23.6.1 建立UDP 接收器 ? ? ? ? ? ? ?550
23.6.2 創建UDP 發送器 ? ? ? ? ? ? ?551
23.6.3 使用多播 ? ? ? ? 553
23.7 使用套接字 ? ? ? ? ? 554
23.7.1 使用套接字創建偵聽器 ? ? ? ? ?554
23.7.2 使用NetworkStream 和套接字 ? ? ?556
23.7.3 通過套接字使用讀取器和寫入器 ? ?557
23.7.4 使用套接字實現接收器 ? ? ? ? ?557
23.8 小結 ? ? ? ? ? ? ? ? 559
第24 章 安全性 ? ? ? ? ? ? ?560
24.1 概述 ? ? ? ? ? ? ? ? 560
24.2 驗證用戶信息 ? ? ? ? 561
24.2.1 使用Windows 標識 ? ? ? ? ? ?561
24.2.2 Windows Principal ? ? ? ? ? ? ?562
24.2.3 使用聲稱 ? ? ? ? 562
24.3 加密數據 ? ? ? ? ? ? 564
24.3.1 創建和驗證簽名 ? ?565
24.3.2 實現安全的數據交換 ? ? ? ? ? ?567
24.3.3 使用RSA 簽名和散列 ? ? ? ? ? 569
24.4 保護數據 ? ? ? ? ? ? 571
24.4.1 實現數據保護 ? ? 571
24.4.2 用戶機密 ? ? ? ? 573
24.5 資源的訪問控制 ? ? ? 575
24.6 Web 安全性 ? ? ? ? ? 577
24.6.1 編碼 ? ? ? ? ? ?577
24.6.2 SQL 注入 ? ? ? ?579
24.6.3 跨站點請求偽造 ? ?580
24.7 小結 ? ? ? ? ? ? ? ? 581
第25 章 ADO.NET 和事務 ? ? 582
25.1 ADO.NET 概述 ? ? ? ?582
25.1.1 示例數據庫 ? ? ? 583
25.1.2 NuGet 包和名稱空間 ? ? ? ? ? ?583
25.2 使用數據庫連接 ? ? ? 584
25.2.1 管理連接字符串 ? ?585
25.2.2 連接池 ? ? ? ? ?585
25.2.3 連接信息 ? ? ? ?585
25.3 命令 ? ? ? ? ? ? ? ? 587
25.3.1 ExecuteNonQuery()方法 ? ? ? ? ?587
25.3.2 ExecuteScalar()方法 ? ? ? ? ? ? 588
25.3.3 ExecuteReader()方法 ? ? ? ? ? ?589
25.3.4 調用存儲過程 ? ? 590
25.4 異步數據訪問 ? ? ? ? 591
25.5 事務 ? ? ? ? ? ? ? ? 592
25.6 事務和System.Transaction ? ? ? ? ? 595
25.6.1 可提交的事務 ? ? 597
25.6.2 依賴事務 ? ? ? ?598
25.6.3 環境事務 ? ? ? ?599
25.6.4 嵌套作用域和環境事務 ? ? ? ? ?601
25.7 小結 ? ? ? ? ? ? ? ? 602
第26 章 Entity Framework Core ? ? ? ? ? 604
26.1 Entity Framework 簡史 ? ? ? ? ? ? ?605
26.2 EF Core 簡介 ? ? ? ? ?606
26.2.1 創建模型 ? ? ? ?607
26.2.2 約定、注釋和流利API ? ? ? ? ? 607
26.2.3 創建上下文 ? ? ? 608
26.2.4 創建數據庫 ? ? ? 608
26.2.5 刪除數據庫 ? ? ? 609
26.2.6 寫入數據庫 ? ? ? 609
26.2.7 讀取數據庫 ? ? ? 610
26.2.8 更新記錄 ? ? ? ?610
26.2.9 刪除記錄 ? ? ? ?611
26.2.10 日志記錄 ? ? ? 611
26.3 使用依賴注入 ? ? ? ? 612
26.4 創建模型 ? ? ? ? ? ? 614
26.4.1 創建關系 ? ? ? ?614
26.4.2 數據注釋 ? ? ? ?614
26.4.3 流利API ? ? ? ? 615
26.4.4 自包含類型的配置 ? ? ? ? ? ? 616
26.4.5 在數據庫中搭建模型 ? ? ? ? ? ?617
26.4.6 映射到字段 ? ? ? 618
26.4.7 陰影屬性 ? ? ? ?619
26.5 查詢 ? ? ? ? ? ? ? ? 621
26.5.1 基本查詢 ? ? ? ?621
26.5.2 客戶端和服務器求值 ? ? ? ? ? ?622
26.5.3 原始SQL 查詢 ? ? 623
26.5.4 已編譯查詢 ? ? ? 624
26.5.5 全局查詢過濾器 ? ?624
26.5.6 EF.Functions ? ? ?625
26.6 關系 ? ? ? ? ? ? ? ?625
26.6.1 使用約定的關系 ? 625
26.6.2 顯式加載相關數據 ? ? ? ? ? ? 627
26.6.3 即時加載相關數據 ? ? ? ? ? ? 628
26.6.4 使用注釋的關系 ? 628
26.6.5 使用流利API 的關系 ? ? ? ? ? 629
26.6.6 根據約定的每個層次結構的表 ? ? 630
26.6.7 使用流利API 的每個層次結構中的表 ? ? ?632
26.6.8 表的拆分 ? ? ? ?633
26.6.9 擁有的實體 ? ? ?634
26.7 保存數據 ? ? ? ? ? ?636
26.7.1 用關系添加對象 ? 636
26.7.2 對象的跟蹤 ? ? ?637
26.7.3 更新對象 ? ? ? ?638
26.7.4 更新未跟蹤的對象 ? ? ? ? ? ? 638
26.7.5 批處理 ? ? ? ? 639
26.8 沖突的處理 ? ? ? ? ?640
26.8.1 最后一個更改獲勝 ? ? ? ? ? ? 640
26.8.2 第一個更改獲勝 ? ? ?641
26.9 上下文池 ? ? ? ? ? ?644
26.10 使用事務 ? ? ? ? ? 644
26.10.1 使用隱式的事務 ? ? ? ? ? ?644
26.10.2 創建顯式的事務 ? ? ? ? ? ?646
26.11 遷移 ? ? ? ? ? ? ? 647
26.11.1 準備項目文件 ? 647
26.11.2 利用ASP.NET Core MVC 托管應用程序 ? ? ?648
26.11.3 托管.NET Core 控制臺應用程序 ? ? 648
26.11.4 創建遷移 ? ? ?649
26.11.5 以編程方式應用遷移 ? ? ? ? 651
26.11.6 應用遷移的其他方法 ? ? ? ? 652
26.12 小結 ? ? ? ? ? ? ? 652
第27 章 本地化 ? ? ? ? ? ? ? 653
27.1 全球市場 ? ? ? ? ? ?653
27.2 System.Globalization 名稱空間 ? ? ?654
27.2.1 Unicode 問題 ? ? 654
27.2.2 區域性和區域 ? ?655
27.2.3 使用區域性 ? ? ?658
27.2.4 排序 ? ? ? ? ? 663
27.3 資源 ? ? ? ? ? ? ? ?664
27.3.1 資源讀取器和寫入器 ? ? ? ? ? 664
27.3.2 使用資源文件生成器 ? ? ? ? ? ?665
27.3.3 通過ResourceManager 使用資源文件 ? ? ? ? 666
27.3.4 System.Resources 名稱空間 ? ? ? ?666
27.4 使用ASP.NET Core 本地化 ? ? ? ? ?667
27.4.1 注冊本地化服務 ? ?667
27.4.2 注入本地化服務 ? ?668
27.4.3 區域性提供程序 ? ?668
27.4.4 在ASP.NET Core 中使用資源 ? ? ? 669
27.4.5 使用控制器和視圖進行本地化 ? ? ?670
27.5 本地化UWP ? ? ? ? ? 674
27.5.1 給UWP 使用資源 ? ? ? ? ? ? ? 674
27.5.2 使用多語言應用程序工具集進行本地化 ? ? ? ?675
27.6 小結 ? ? ? ? ? ? ? ? 677
第28 章 測試 ? ? ? ? ? ? ? ? 678
28.1 概述 ? ? ? ? ? ? ? ? 678
28.2 使用MSTest 進行單元測試 ? ? ? ? ?679
28.2.1 使用MSTest 創建單元測試 ? ? ? ?679
28.2.2 運行單元測試 ? ? ?681
28.2.3 使用MSTest 預期異常 ? ? ? ? ? 682
28.2.4 測試全部代碼路徑 ? ? ? ? ? ? ?683
28.2.5 外部依賴 ? ? ? ? 683
28.3 使用xUnit 進行單元測試 ? ? ? ? ? 685
28.3.1 使用xUnit 和.NET Core ? ? ? ? ?686
28.3.2 創建Fact 屬性 ? ? 686
28.3.3 創建Theory 特性 ? ? ? ? ? ? ? 687
28.3.4 使用Mocking 庫 ? ?688
28.4 實時單元測試 ? ? ? ? 690
28.5 使用EF Core 進行單元測試 ? ? ? ? 692
28.6 使用Windows 應用程序進行UI測試 ? ? ? ? ? ? ? ? 693
28.7 Web 集成、負載和性能測試 ? ? ? ? 697
28.7.1 ASP.NET Core 集成測試 ? ? ? ? ?697
28.7.2 創建Web 測試 ? ? 698
28.7.3 運行Web 測試 ? ? 700
28.8 小結 ? ? ? ? ? ? ? ? 702
第29 章 跟蹤、日志和分析 ? ? ?703
29.1 診斷概述 ? ? ? ? ? ? 703
29.2 使用EventSource 跟蹤 ? ? ? ? ? ? ?704
29.2.1 EventSource 的簡單用法 ? ? ? ? ?705
29.2.2 跟蹤工具 ? ? ? ? 706
29.2.3 派生自EventSource ? ? ? ? ? ? ?707
29.2.4 使用注釋和EventSource ? ? ? ? ?709
29.2.5 創建事件清單模式 ? ? ? ? ? ? ?710
29.2.6 使用活動ID ? ? ? ?712
29.3 創建自定義偵聽器 ? ? ?714
29.4 使用ILogger 接口編寫日志 ? ? ? ? ?715
29.4.1 配置提供程序 ? ? ?716
29.4.2 使用作用域 ? ? ? 717
29.4.3 過濾 ? ? ? ? ? ?718
29.4.4 配置日志記錄 ? ? ?718
29.4.5 使用沒有依賴注入的ILogger ? ? ? ?719
29.5 使用Visual Studio App Center進行分析 ? ? ? ? ? ? 720
29.6 小結 ? ? ? ? ? ? ? ? 722
第III 部分 Web 應用程序和服務
第30 章 ASP.NET Core ? ? ? 727
30.1 概述 ? ? ? ? ? ? ? ? 727
30.2 Web 技術 ? ? ? ? ? ? 728
30.2.1 HTML ? ? ? ? ? ?728
30.2.2 CSS ? ? ? ? ? ? 729
30.2.3 JavaScript 和TypeScript ? ? ? ? ?729
30.2.4 腳本庫 ? ? ? ? ? 729
30.3 ASP.NET Web 項目 ? ? 730
30.3.1 啟動 ? ? ? ? ? ?733
30.3.2 示例應用程序 ? ? ?735
30.4 添加客戶端內容 ? ? ? ?736
30.4.1 為客戶端內容使用工具 ? ? ? ? ? 737
30.4.2 通過Bower 使用客戶端庫 ? ? ? ? 738
30.4.3 使用JavaScript 包管理器npm ? ? ? 739
30.4.4 捆綁 ? ? ? ? ? ?739
30.4.5 用webpack 打包 ? ?740
30.5 請求和響應 ? ? ? ? ? 741
30.5.1 請求標題 ? ? ? ? 742
30.5.2 查詢字符串 ? ? ? 744
30.5.3 編碼 ? ? ? ? ? ?745
30.5.4 表單數據 ? ? ? ? 745
30.5.5 cookie ? ? ? ? ? 746
30.5.6 發送JSON ? ? ? ?747
30.6 依賴注入 ? ? ? ? ? ? 747
30.6.1 定義服務 ? ? ? ? 748
30.6.2 注冊服務 ? ? ? ? 748
30.6.3 注入服務 ? ? ? ? 748
30.6.4 調用控制器 ? ? ? 749
30.7 簡單的路由 ? ? ? ? ? 749
30.8 創建自定義的中間件 ? ? ? ? ? ? ? 750
30.9 會話狀態 ? ? ? ? ? ? 751
30.10 用ASP.NET Core 配置 ? ? ? ? ? ?752
30.10.1 讀取配置 ? ? ? ?753
30.10.2 修改配置提供程序 ? ? ? ? ? ? 755
30.10.3 基于環境的不同配置 ? ? ? ? ? 756
30.11 小結 ? ? ? ? ? ? ? ?757
第31 章 ASP.NET Core MVC ? ? ? ? ? ? ?758
31.1 為ASP.NET Core MVC 建立服務 ? ? 758
31.2 定義路由 ? ? ? ? ? ? 760
31.2.1 添加路由 ? ? ? ?760
31.2.2 使用路由約束 ? ? 761
31.3 創建控制器 ? ? ? ? ? 761
31.3.1 理解動作方法 ? ? 762
31.3.2 使用參數 ? ? ? ?762
31.3.3 返回數據 ? ? ? ?762
31.3.4 使用Controller 基類和POCO控制器 ? ? ? ? ?763
31.4 創建視圖 ? ? ? ? ? ? 765
31.4.1 向視圖傳遞數據 ? ?765
31.4.2 Razor 語法 ? ? ? 766
31.4.3 創建強類型視圖 ? ?766
31.4.4 定義布局 ? ? ? ?767
31.4.5 用部分視圖定義內容 ? ? ? ? ? ?770
31.4.6 使用視圖組件 ? ? 773
31.4.7 在視圖中使用依賴注入 ? ? ? ? ?774
31.4.8 為多個視圖導入名稱空間 ? ? ? ? 775
31.5 從客戶端提交數據 ? ? 775
31.5.1 模型綁定器 ? ? ? 777
31.5.2 注解和驗證 ? ? ? 778
31.6 使用HTML Helper ? ? ?779
31.6.1 簡單的Helper ? ? 779
31.6.2 使用模型數據 ? ? 779
31.6.3 定義HTML 特性 ? ? ? ? ? ? ?780
31.6.4 創建列表 ? ? ? ?780
31.6.5 強類型化的Helper ? ? ? ? ? ? ?781
31.6.6 編輯器擴展 ? ? ? 782
31.6.7 實現模板 ? ? ? ?782
31.7 Tag Helper ? ? ? ? ? ? 783
31.7.1 激活Tag Helper ? ?783
31.7.2 使用錨定Tag Helper ? ? ? ? ? ? 783
31.7.3 使用Label Tag Helper ? ? ? ? ? ?784
31.7.4 使用Input Tag Helper ? ? ? ? ? ? 785
31.7.5 使用表單進行驗證 ? ? ? ? ? ? 786
31.7.6 environment Tag Helper ? ? ? ? ? 787
31.7.7 創建自定義Tag Helper ? ? ? ? ? 788
31.7.8 用Tag Helper 創建元素 ? ? ? ? ?790
31.8 實現動作過濾器 ? ? ?792
31.9 創建數據驅動的應用程序 ? ? ? ? ?793
31.9.1 定義模型 ? ? ? ?794
31.9.2 創建數據庫 ? ? ?795
31.9.3 創建服務 ? ? ? ?796
31.9.4 創建控制器 ? ? ?798
31.9.5 創建視圖 ? ? ? ?800
31.10 實現身份驗證和授權 ? ? ? ? ? ? 803
31.10.1 存儲和檢索用戶信息 ? ? ? ? ?803
31.10.2 啟動身份系統 ? ?804
31.10.3 執行用戶注冊 ? ?804
31.10.4 設置用戶登錄 ? ?806
31.10.5 驗證用戶的身份 ? ? ? ? ? ? ?807
31.10.6 使用Azure Active Directory 對用戶進行身份驗證 ? ? ? ? ? ?807
31.11 Razor 頁面 ? ? ? ? ?812
31.11.1 創建一個Razor 頁面項目 ? ? ? 812
31.11.2 實現數據訪問 ? ?813
31.11.3 使用內聯代碼 ? ?814
31.11.4 使用內聯代碼和頁面模型 ? ? ? 816
31.11.5 使用代碼隱藏文件 ? ? ? ? ? ?817
31.11.6 頁面參數 ? ? ? 817
31.12 小結 ? ? ? ? ? ? ? 818
第32 章 Web API ? ? ? ? ? ?819
32.1 概述 ? ? ? ? ? ? ? ?819
32.2 創建服務 ? ? ? ? ? ?820
32.2.1 定義模型 ? ? ? ?821
32.2.2 創建服務 ? ? ? ?821
32.2.3 創建控制器 ? ? ?823
32.2.4 修改響應格式 ? ?824
32.2.5 REST 結果和狀態碼 ? ? ? ? ? ?825
32.3 創建異步服務 ? ? ? ?826
32.4 創建.NET 客戶端 ? ? 827
32.4.1 發送GET 請求 ? ?828
32.4.2 從服務中接收XML ? ? ? ? ? 832
32.4.3 發送POST 請求 ? 833
32.4.4 發送PUT 請求 ? ?833
32.4.5 發送DELETE 請求 ? ? ? ? ? ?834
32.5 寫入數據庫 ? ? ? ? ?835
32.5.1 使用EF Core ? ? ?835
32.5.2 創建數據訪問服務 ? ? ? ? ? ? ?836
32.6 用OpenAPI 或Swagger 創建元數據 ? 837
32.7 創建和使用OData服務 ? ? ? ? ? ? 841
32.7.1 創建數據模型 ? ? 842
32.7.2 創建數據庫 ? ? ? 843
32.7.3 OData 啟動代碼 ? ?844
32.7.4 創建OData 控制器 ? ? ? ? ? ? 844
32.7.5 OData 查詢 ? ? ? 845
32.8 使用Azure Function ? ? 847
32.8.1 創建Azure Function ? ? ? ? ? ? ?847
32.8.2 使用依賴注入容器 ? ? ? ? ? ? ?848
32.8.3 實現GET、POST 和PUT 請求 ? ? 849
32.8.4 運行Azure Function ? ? ? ? ? ? ?851
32.9 小結 ? ? ? ? ? ? ? ? 852
第IV 部分 應用程序
第33 章 Windows 應用程序 ? ?855
33.1 Windows 應用程序簡介 ? ? ? ? ? ? 855
33.1.1 Windows 運行庫 ? ?856
33.1.2 Hello, Windows ? ? 856
33.1.3 應用程序清單文件 ? ? ? ? ? ? ?857
33.1.4 應用程序啟動 ? ? 859
33.1.5 主頁 ? ? ? ? ? ?859
33.2 XAML ? ? ? ? ? ? ? ?861
33.2.1 XAML 標準 ? ? ? 861
33.2.2 將元素映射到類 ? ?861
33.2.3 通過XAML 使用定制的.NET 類 ? ?862
33.2.4 將屬性用作特性 ? ?863
33.2.5 將屬性用作元素 ? ?863
33.2.6 依賴屬性 ? ? ? ? 864
33.2.7 創建依賴屬性 ? ? 864
33.2.8 值變更回調和事件 ? ? ? ? ? ? ?865
33.2.9 路由事件 ? ? ? ? 866
33.2.10 附加屬性 ? ? ? ?867
33.2.11 標記擴展 ? ? ? ?868
33.2.12 自定義標記擴展 ? ? ? ? ? ? ?869
33.2.13 條件XAML ? ? ? 870
33.3 控件 ? ? ? ? ? ? ? ? 871
33.3.1 框架派生的UI 元素 ? ? ? ? ? ? 872
33.3.2 控件派生的控件 ? ?875
33.3.3 范圍控件 ? ? ? ? 881
33.3.4 內容控件 ? ? ? ? 882
33.3.5 按鈕 ? ? ? ? ? ?883
33.3.6 項控件 ? ? ? ? ?884
33.3.7 Flyout 控件 ? ? ? 884
33.4 數據綁定 ? ? ? ? ? ? 884
33.4.1 用INotifyPropertyChanged 更改通知 ? ? ? ? ? ?885
33.4.2 創建圖書列表 ? ? 886
33.4.3 列表綁定 ? ? ? ? 887
33.4.4 把事件綁定到方法 ? ? ? ? ? ? ?887
33.4.5 使用數據模板和數據模板選擇器 ? ?888
33.4.6 綁定簡單對象 ? ? 890
33.4.7 值的轉換 ? ? ? ? 891
33.5 導航 ? ? ? ? ? ? ? ? 892
33.5.1 導航回最初的頁面 ? ? ? ? ? ? ?892
33.5.2 重寫Page 類的導航 ? ? ? ? ? ? 893
33.5.3 在頁面之間導航 ? ?894
33.5.4 后退按鈕 ? ? ? ? 895
33.5.5 Hub ? ? ? ? ? ?896
33.5.6 Pivot ? ? ? ? ? ?898
33.5.7 NavigationView ? ? 899
33.6 布局 ? ? ? ? ? ? ? ? 902
33.6.1 StackPanel ? ? ? ? 902
33.6.2 Canvas ? ? ? ? ?903
33.6.3 Grid ? ? ? ? ? ?903
33.6.4 VariableSizedWrapGrid ? ? ? ? ? 904
33.6.5 RelativePanel ? ? ?906
33.6.6 自適應觸發器 ? ? 906
33.6.7 XAML 視圖 ? ? ? 909
33.6.8 延遲加載 ? ? ? ? 909
33.7 小結 ? ? ? ? ? ? ? ? 910
第34 章 模式和XAML 應用程序 ? ? ? ? ? ? 911
34.1 使用 MVVM 的原因 ? ? ? ? ? ? ? 911
34.2 定義 MVVM 模式 ? ? 912
34.3 共享代碼 ? ? ? ? ? ? 913
34.3.1 使用API 協定和通用Windows平臺 ? ? ? ? ? ?913
34.3.2 使用共享項目 ? ? 915
34.3.3 使用.NET 標準庫 ? ? ? ? ? ? ?916
34.4 示例解決方案 ? ? ? ? 917
34.5 模型 ? ? ? ? ? ? ? ? 918
34.5.1 實現變更通知 ? ? 918
34.5.2 使用Repository 模式 ? ? ? ? ? ?919
34.6 服務 ? ? ? ? ? ? ? ? 920
34.7 視圖模型 ? ? ? ? ? ? 921
34.7.1 使用IEditableObject ? ? ? ? ? ? 923
34.7.2 視圖模型的具體實現 ? ? ? ? ? ?924
34.7.3 命令 ? ? ? ? ? ?925
34.7.4 服務、ViewModel 和依賴注入 ? ? 926
34.8 視圖 ? ? ? ? ? ? ? ? 927
34.8.1 從視圖模型中打開對話框 ? ? ? ? 930
34.8.2 頁面之間的導航 ? ?931
34.8.3 自適應用戶界面 ? ?933
34.8.4 顯示進度信息 ? ? 935
34.8.5 使用列表項中的操作 ? ? ? ? ? ?936
34.9 使用事件傳遞消息 ? ? 938
34.10 使用框架 ? ? ? ? ? ?939
34.11 小結 ? ? ? ? ? ? ? ?940
第35 章 樣式化Windows 應用程序 ? ? ? ? 941
35.1 樣式設置 ? ? ? ? ? ? 941
35.2 形狀 ? ? ? ? ? ? ? ? 942
35.3 幾何圖形 ? ? ? ? ? ? 944
35.3.1 使用段的幾何圖形 ? ? ? ? ? ? 944
35.3.2 使用PathMarkup 的幾何圖形 ? ? ?945
35.4 變換 ? ? ? ? ? ? ? ? 945
35.4.1 縮放 ? ? ? ? ? ?945
35.4.2 平移 ? ? ? ? ? ?946
35.4.3 旋轉 ? ? ? ? ? ?946
35.4.4 傾斜 ? ? ? ? ? ?946
35.4.5 組合變換和復合變換 ? ? ? ? ? ?946
35.4.6 使用矩陣的變換 ? ?947
35.5 畫筆 ? ? ? ? ? ? ? ? 947
35.5.1 SolidColorBrush ? ? 947
35.5.2 LinearGradientBrush ? ? ? ? ? ? 947
35.5.3 ImageBrush ? ? ? ?948
35.5.4 AcrylicBrush ? ? ?948
35.5.5 RevealBrush ? ? ? 949
35.6 樣式和資源 ? ? ? ? ? 949
35.6.1 樣式 ? ? ? ? ? ?949
35.6.2 資源 ? ? ? ? ? ?951
35.6.3 從代碼中訪問資源 ? ? ? ? ? ? 952
35.6.4 資源字典 ? ? ? ?952
35.6.5 主題資源 ? ? ? ?953
35.7 模板 ? ? ? ? ? ? ? ? 954
35.7.1 控件模板 ? ? ? ?955
35.7.2 數據模板 ? ? ? ?958
35.7.3 樣式化ListView ? ?959
35.7.4 ListView 項的數據模板 ? ? ? ? ?960
35.7.5 項容器的樣式 ? ?960
35.7.6 項面板 ? ? ? ? 961
35.7.7 列表視圖的控件模板 ? ? ? ? ? 961
35.8 動畫 ? ? ? ? ? ? ? ?962
35.8.1 時間軸 ? ? ? ? ?962
35.8.2 緩動函數 ? ? ? ?964
35.8.3 關鍵幀動畫 ? ? ?968
35.8.4 過渡 ? ? ? ? ? 969
35.9 可視化狀態管理器 ? ?971
35.9.1 用控件模板預定義狀態 ? ? ? ? 972
35.9.2 定義自定義狀態 ? 973
35.9.3 設置自定義的狀態 ? ? ? ? ? ? 973
35.10 小結 ? ? ? ? ? ? ? 974
第36 章 高級Windows 應用程序 ? ? ? ? ? ?975
36.1 概述 ? ? ? ? ? ? ? ?975
36.2 應用程序的生命周期 ? ? ? ? ? ? ?976
36.2.1 應用程序的執行狀態 ? ? ? ? ? 976
36.2.2 在頁面之間導航 ? 976
36.3 導航狀態 ? ? ? ? ? ?978
36.3.1 暫停應用程序 ? ?979
36.3.2 激活暫停的應用程序 ? ? ? ? ? 980
36.3.3 測試暫停 ? ? ? ?980
36.3.4 頁面狀態 ? ? ? ?981
36.4 共享數據 ? ? ? ? ? ?983
36.4.1 共享源 ? ? ? ? 983
36.4.2 共享目標 ? ? ? ?986
36.5 應用程序服務 ? ? ? ?991
36.5.1 創建模型 ? ? ? ?991
36.5.2 為應用程序服務連接創建后臺任務 ?992
36.5.3 注冊應用程序服務 ? ? ? ? ? ? 993
36.5.4 調用應用程序服務 ? ? ? ? ? ? 994
36.6 高級的編譯綁定 ? ? ?996
36.6.1 已編譯數據綁定的生命周期 ? ? ? 996
36.6.2 綁定到方法上 ? ?997
36.6.3 用x:Bind 分階段 ? 998
36.7 使用文本 ? ? ? ? ? 1002
36.7.1 使用字體 ? ? ? 1002
36.7.2 內聯和塊元素 ? 1004
36.7.3 使用溢出區域 ? 1005
36.8 上墨 ? ? ? ? ? ? ? 1008
36.9 自動建議 ? ? ? ? ? ?1011
36.10 小結 ? ? ? ? ? ? ? 1013
第37 章 Xamarin.Forms ? ? ? 1015
37.1 Xamarin 開發入門 ? ? 1015
37.1.1 用Android 架構Xamarin ? ? ? ? 1016
37.1.2 用iOS 架構Xamarin ? ? ? ? ? ?1016
37.1.3 Xamarin.Forms ? ? 1017
37.2 Xamarin 開發工具 ? ? 1018
37.2.1 Android ? ? ? ? ?1018
37.2.2 iOS ? ? ? ? ? ?1019
37.2.3 Visual Studio 2017 ? ? ? ? ? ? ?1019
37.2.4 Visual Studio for Mac ? ? ? ? ? ?1019
37.2.5 Visual Studio App Center ? ? ? ? ?1020
37.3 Android 基礎 ? ? ? ?1020
37.3.1 活動 ? ? ? ? ? 1021
37.3.2 資源 ? ? ? ? ? 1022
37.3.3 顯示列表 ? ? ? ?1022
37.3.4 顯示消息 ? ? ? ?1024
37.4 iOS 基礎 ? ? ? ? ? ?1025
37.4.1 iOS 應用程序結構 ? ? ? ? ? ? 1025
37.4.2 故事板 ? ? ? ? 1026
37.4.3 控制器 ? ? ? ? 1028
37.4.4 顯示消息 ? ? ? ?1028
37.5 Xamarin. Forms 應用程序 ? ? ? ? ?1029
37.5.1 托管Xamarin 的Windows應用程序 ? ? ? ?1029
37.5.2 托管Xamarin 的Android ? ? ? ? 1030
37.5.3 托管Xamarin 的iOS ? ? ? ? ? ?1031
37.5.4 共享的項目 ? ? ?1031
37.6 使用公共庫 ? ? ? ? ?1032
37.7 控件層次結構 ? ? ? ?1032
37.8 頁面 ? ? ? ? ? ? ? ?1033
37.9 導航 ? ? ? ? ? ? ? ?1034
37.10 布局 ? ? ? ? ? ? ? 1035
37.11 視圖 ? ? ? ? ? ? ? 1037
37.12 數據綁定 ? ? ? ? ? 1037
37.13 命令 ? ? ? ? ? ? ? 1038
37.14 ListView 和ViewCell ? ? ? ? ? ? 1038
37.15 小結 ? ? ? ? ? ? ? 1039
附贈章節電子版(請掃描封底二維碼獲取)
第1 章 Composition ? ? ? ? ? ? 1
BC1.1 概述 ? ? ? ? ? ? ? ? 1
BC1.2 Composition 庫的體系結構 ? ? ? ? ?2
BC1.2.1 使用特性的Composition ? ? ? ? 3
BC1.2.2 基于約定的部件注冊 ? ? ? ? ? 8
BC1.3 定義協定 ? ? ? ? ? ?10
BC1.4 導出部件 ? ? ? ? ? ?13
BC1.4.1 創建部件 ? ? ?13
BC1.4.2 使用部件的部件 ? ? ? ? ? ? 17
BC1.4.3 導出元數據 ? ? 17
BC1.4.4 使用元數據進行惰性加載 ? ? ? 19
BC1.5 導入部件 ? ? ? ? ? ?19
BC1.5.1 導入連接 ? ? ?22
BC1.5.2 部件的惰性加載 ? ? ? ? ? ? 23
BC1.5.3 讀取元數據 ? ? 23
BC1.6 小結 ? ? ? ? ? ? ? ?25
第2 章 XML 和JSON ? ? ? ? ? 26
BC2.1 數據格式 ? ? ? ? ? ?26
BC2.1.1 XML ? ? ? ? ?27
BC2.1.2 .NET 支持的XML 標準 ? ? ? ?28
BC2.1.3 在框架中使用XML ? ? ? ? ? 28
BC2.1.4 JSON ? ? ? ? 29
BC2.2 讀寫流格式的XML ? ?30
BC2.2.1 使用XmlReader 類讀取XML ? ?31
BC2.2.2 使用XmlWriter 類 ? ? ? ? ? ?33
BC2.3 在.NET 中使用DOM ? ? ? ? ? ? ? 34
BC2.3.1 使用XmlDocument 類讀取 ? ? ?35
BC2.3.2 遍歷層次結構 ? ? ? ? ? ? ? 35
BC2.3.3 使用XmlDocument 插入節點 ? ?36
BC2.4 使用XPathNavigator 類 ? ? ? ? ? ?37
BC2.4.1 XPathDocument 類 ? ? ? ? ? ?37
BC2.4.2 XPathNavigator 類 ? ? ? ? ? ?37
BC2.4.3 XPathNodeIterator 類 ? ? ? ? ?38
BC2.4.4 使用XPath 導航XML ? ? ? ? 38
BC2.4.5 使用XPath 評估 ? ? ? ? ? ? 39
BC2.4.6 用XPath 修改XML ? ? ? ? ? 39
BC2.5 在XML 中序列化對象 ? ? ? ? ? ? 40
BC2.5.1 序列化簡單對象 ? ? ? ? ? ? 40
BC2.5.2 序列化一個對象樹 ? ? ? ? ? 42
BC2.5.3 沒有特性的序列化 ? ? ? ? ? 44
BC2.6 LINQ to XML ? ? ? ? 46
BC2.6.1 XDocument 對象 ? ? ? ? ? ? 46
BC2.6.2 XElement 對象 ? ? ? ? ? ? ?47
BC2.6.3 XNamespace 對象 ? ? ? ? ? ?47
BC2.6.4 XComment 對象 ? ? ? ? ? ? 49
BC2.6.5 XAttribute 對象 ? ? ? ? ? ? ?49
BC2.6.6 使用LINQ 查詢XML 文檔 ? ? 50
BC2.6.7 查詢動態的XML 文檔 ? ? ? ? 50
BC2.6.8 轉換為對象 ? ? 52
BC2.6.9 轉換為XML ? ? 52
BC2.7 JSON ? ? ? ? ? ? ? 53
BC2.7.1 創建JSON ? ? ?53
BC2.7.2 轉換對象 ? ? ?54
BC2.7.3 序列化對象 ? ? 55
BC2.7.4 遍歷JSON 節點 ? ? ? ? ? ? 55
BC2.8 小結 ? ? ? ? ? ? ? ?56
第3 章 WebHooks 和SignalR ? ?57
BC3.1 概述 ? ? ? ? ? ? ? ?57
BC3.2 WebSockets ? ? ? ? ? 58
BC3.2.1 WebSockets 服務器 ? ? ? ? ? 58
BC3.2.2 WebSockets 客戶端 ? ? ? ? ? 60
BC3.3 使用SignalR 的簡單聊天程序 ? ? ? 62
BC3.3.1 創建集線器 ? ? 62
BC3.3.2 用HTML 和JavaScript 創建客戶端 ? ? ? ?63
BC3.3.3 創建SignalR .NET 客戶端 ? ? ?65
BC3.4 分組連接 ? ? ? ? ? ?68
BC3.4.1 用分組擴展集線器 ? ? ? ? ? 68
BC3.4.2 用分組擴展Windows 客戶端 ? ?69
BC3.5 WebHooks 的體系結構 ? ? ? ? ? ? 71
BC3.6 創建Dropbox 和GitHub 接收器 ? ? 72
BC3.6.1 創建Web 應用程序 ? ? ? ? ? 73
BC3.6.2 為Dropbox 和GitHub 配置WebHooks ? ? ?73
BC3.6.3 實現處理程序 ? ? ? ? ? ? ? 73
BC3.6.4 用Dropbox 和GitHub 配置應用程序 ? ? ?76
BC3.6.5 運行應用程序 ? ? ? ? ? ? ? 77
BC3.7 小結 ? ? ? ? ? ? ? ?77
第4 章 機器人和認知服務 ? ? ? 79
BC4.1 機器人的定義 ? ? ? ?79
BC4.2 創建對話框機器人 ? ?80
BC4.2.1 配置狀態服務 ? ? ? ? ? ? ?81
BC4.2.2 接收機器人消息 ? ? ? ? ? ?.82
BC4.2.3 定義對話框 ? ? ? 83
BC4.2.4 使用PromptDialog ? ? ? ? ? ?85
BC4.3 為對話框使用Form Flow ? ? ? ? ? 88
BC4.4 創建英雄卡 ? ? ? ? 89
BC4.5 機器人和LUIS ? ? ? 91
BC4.5.1 定義意圖和話語 ? ? ? ? ? ?92
BC4.5.2 訪問LUIS 中的建議 ? ? ? ? 95
BC4.5.3 使用帶有活動檢查的Form Flow ? ?96
BC4.6 小結 ? ? ? ? ? ? ?96
第5 章 Windows 應用程序的更多特性 ? ? ? ?97
BC5.1 概述 ? ? ? ? ? ? ? 97
BC5.2 相機 ? ? ? ? ? ? ? ?98
BC5.3 Geolocation 和MapControl ? ? ? ? ? 99
BC5.3.1 使用MapControl ? ? ? ? ? ? 99
BC5.3.2 使用Geolocator 定位信息 ? ? ?102
BC5.3.3 街景地圖 ? ? ?103
BC5.3.4 繼續請求位置信息 ? ? ? ? ? 104
BC5.4 傳感器 ? ? ? ? ? ? 105
BC5.4.1 光線 ? ? ? ? 106
BC5.4.2 羅盤 ? ? ? ? 107
BC5.4.3 加速計 ? ? ? 107
BC5.4.4 傾斜計 ? ? ? 108
BC5.4.5 陀螺儀 ? ? ? 109
BC5.4.6 方向 ? ? ? ? 109
BC5.4.7 Rolling Marble 示例 ? ? ? ? ?110
BC5.5 小結 ? ? ? ? ? ? ? 112
可以直接購買
原文地址:https://mp.weixin.qq.com/s/fQdcCwnt6-RUrqynAHhDLw
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的持续畅销20年的《C#高级编程》出第11版了!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享一个.NET平台开源免费跨平台的大数
- 下一篇: .NET微服务体系结构中为什么使用Oce