歡迎光臨
每天分享高質量文章

持續暢銷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和Func委託     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     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

已同步到看一看
贊(0)

分享創造快樂