注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)C# 12和.NET 8入門與跨平臺開發(fā)(第8版)

C# 12和.NET 8入門與跨平臺開發(fā)(第8版)

C# 12和.NET 8入門與跨平臺開發(fā)(第8版)

定 價:¥198.00

作 者: [美] 馬克·J.普萊斯(Mark J. Price)著,葉偉民 譯
出版社: 清華大學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787302682967 出版時間: 2025-04-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  C#的應(yīng)用領(lǐng)域極廣,是編程語言中的翹楚。作為暢銷的C#系列圖書的最新版本,本書涵蓋C#12和.NET 8的所有最新功能,將幫助你夯實基礎(chǔ),讓你自信地使用最新C#和.NET構(gòu)建項目。《C# 12和.NET 8入門與跨平臺開發(fā)(第8版)》討論面向?qū)ο缶幊?、編寫函?shù)、測試函數(shù)調(diào)試函數(shù)及實現(xiàn)接口等主題;介紹.NETAPI,這些API可執(zhí)行多種任務(wù),如管理和查詢數(shù)據(jù),使用文件系統(tǒng)、序列化。你可用ASP.NET Core來構(gòu)建和部署本書列舉的跨平臺示例應(yīng)用程序,如網(wǎng)站和服務(wù)《C# 12和.NET 8入門與跨平臺開發(fā)(第8版)》示例中融入了.NET 8的增強(qiáng)功能,使用類型別名和主構(gòu)造函數(shù)來實現(xiàn)簡潔的、表達(dá)力強(qiáng)的代碼。你將使用新增的、內(nèi)置的保護(hù)子句來可靠地處理錯誤,并探索ASP.NET Core 8中簡化的緩存實現(xiàn)。你還將看到,在發(fā)布過程中使用原生的AOT編譯能夠縮短啟動時間和減少內(nèi)存占用。你還將使用Visua Studio 2022中新增的HTTP編輯器來完善測試和調(diào)試過程。本書甚至介紹了Blazor全棧,它提供的統(tǒng)一托管模型能夠?qū)崿F(xiàn)無可比擬的Web開發(fā)靈活性。主要內(nèi)容:•C# 12的新功能,包括類型別名和主構(gòu)造函數(shù)•ASP.NET Core 8最小APIWeb服務(wù)的原生AOT發(fā)布功能•通過Blazor全棧、Razor Pages等ASP.NET Core技術(shù)構(gòu)建沉浸式Web應(yīng)用•使用Entity Framework Core模型來無縫地集成和更新數(shù)據(jù)庫•使用LINO來查詢和操縱數(shù)據(jù)•使用Web API和最小API構(gòu)建和使用功能強(qiáng)大的服務(wù)

作者簡介

  Mark J. Price是一位擁有20多年C#編程經(jīng)驗的微軟認(rèn)證技術(shù)專家,專注于C#編程及構(gòu)建Azure云解決方案。自1993年以來,Mark已通過了80多項微軟編程認(rèn)證。從2001年到2003年,Mark在微軟美國總部工作,編寫教學(xué)課件。當(dāng)C#還處于alpha版本時,Mark的團(tuán)隊就編寫了第一個C#培訓(xùn)教程。Mark擅長傳道、授業(yè)、解惑,在微軟任職期間,Mark負(fù)責(zé)培訓(xùn)MCT(微軟認(rèn)證講師),幫助他們以最快的速度掌握C#和.NET新知識。Mark職業(yè)生涯中的大部分時間都在培訓(xùn)各類學(xué)生,包括16歲的新人乃至70歲的退休人員。

圖書目錄

第1章  C#與.NET入門  1
1.1 本書內(nèi)容簡介  1
1.1.1 獲取本書的代碼解決方案  1
1.1.2 本書使用的.NET術(shù)語  2
1.1.3 本書的結(jié)構(gòu)和風(fēng)格  2
1.1.4 本書討論的主題  3
1.1.5 Apps and Services with .NET 8一書中涵蓋的主題  3
1.2  設(shè)置開發(fā)環(huán)境  3
1.2.1 選擇適合學(xué)習(xí)的工具和應(yīng)用程序類型  4
1.2.2 跨平臺部署  7
1.2.3 下載并安裝Visual Studio 2022  7
1.2.4 下載并安裝Visual Studio Code  8
1.3  理解.NET  10
1.3.1 了解.NET支持  11
1.3.2 理解中間語言  13
1.3.3 比較.NET技術(shù)  14
1.3.4 使用代碼編輯器管理多個項目  14
1.4  使用Visual Studio 2022構(gòu)建控制臺應(yīng)用程序  14
1.4.1 使用Visual Studio 2022編寫代碼  14
1.4.2 使用Visual Studio編譯和運行代碼  17
1.4.3 理解頂級程序  18
1.4.4 揭示Program類的名稱空間  20
1.4.5 使用Visual Studio 2022添加第二個項目  20
1.5  使用Visual Studio Code構(gòu)建控制臺應(yīng)用程序  23
1.5.1 使用Visual Studio Code編寫代碼  23
1.5.2 使用dotnet CLI編譯和運行代碼  25
1.5.3 使用Visual Studio Code添加第二個項目  26
1.5.4 Visual Studio Code的步驟小結(jié)  28
1.5.5 本書中使用的其他項目類型小結(jié)  28
1.6  充分利用本書的GitHub存儲庫  28
1.6.1 了解GitHub上的解決方案代碼  29
1.6.2 對本書提出問題  29
1.6.3 反饋  30
1.6.4 避免常見錯誤  30
1.6.5 從GitHub存儲庫下載解決方案代碼  30
1.6.6 在Visual Studio Code和命令行中使用Git  31
1.7  尋求幫助  31
1.7.1 閱讀Microsoft Learn中的文檔  31
1.7.2 本書中的文檔鏈接  31
1.7.3 獲取關(guān)于dotnet工具的幫助  32
1.7.4 獲取類型及其成員的定義  33
1.7.5 配置內(nèi)聯(lián)提示  36
1.7.6 在Stack Overflow上尋找答案  36
1.7.7 使用谷歌搜索答案  37
1.7.8 搜索.NET源代碼  37
1.7.9 訂閱官方的.NET博客  38
1.7.10 觀看Scott Hanselman的視頻  38
1.7.11 ChatGPT和GitHub Copilot等AI工具  39
1.7.12 當(dāng)工具成為障礙時禁用工具  41
1.8  實踐和探索  41
1.8.1 練習(xí)1.1:測試你掌握的知識  41
1.8.2 練習(xí)1.2:使用瀏覽器在任何地方練習(xí)C#  42
1.8.3 練習(xí)1.3:探索主題  42
1.8.4 練習(xí)1.4:探索Polygot Notebooks  42
1.8.5 練習(xí)1.5:探索現(xiàn)代.NET的主題  42
1.8.6 練習(xí)1.6:Free Code Camp和C#認(rèn)證  43
1.8.7 練習(xí)1.7:.NET的alpha版本  43
1.9  本章小結(jié)  43
第2章  C#編程基礎(chǔ)  45
2.1  介紹C#語言  45
2.1.1  理解C#語言版本和特性  45
2.1.2  了解C#標(biāo)準(zhǔn)  46
2.2  了解C#編譯器版本  46
2.2.1 如何輸出SDK版本  47
2.2.2 啟用特定的語言版本編譯器  47
2.2.3 使用未來的C#編譯器版本  48
2.2.4 .NET 8的C#編譯器切換到后續(xù)版本  48
2.2.5  顯示編譯器版本  49
2.3  理解C#語法和詞匯  50
2.3.1  了解C#語法  50
2.3.2  語句  51
2.3.3  注釋  51
2.3.4  代碼塊  52
2.3.5  區(qū)域  52
2.3.6  語句和語句塊的示例  53
2.3.7  使用空白字符格式化代碼  54
2.3.8  了解C#詞匯表  54
2.3.9  將編程語言與人類語言進(jìn)行比較  55
2.3.10  修改C#語法的配色方案  55
2.3.11  如何編寫正確的代碼  55
2.3.12  導(dǎo)入名稱空間  56
2.3.13 隱式和全局導(dǎo)入名稱空間  56
2.3.14  動詞表示方法  60
2.3.15  名詞表示類型、變量、字段和屬性  60
2.3.16  揭示C#詞匯表的范圍  61
2.3.17  請求ChatGPT解釋代碼的示例  62
2.4  使用變量  64
2.4.1  命名和賦值  64
2.4.2  字面值  65
2.4.3  存儲文本  65
2.4.4  輸出表情符號  66
2.4.5 理解逐字字符串  66
2.4.6 原始字符串字面值  66
2.4.7 原始內(nèi)插字符串字面值  67
2.4.8 有關(guān)存儲文本的總結(jié)  67
2.4.9  存儲數(shù)字  68
2.4.10 探索整數(shù)  69
2.4.11 存儲實數(shù)  69
2.4.12  新的數(shù)字類型和不安全代碼  72
2.4.13  存儲布爾值  73
2.4.14  存儲任何類型的對象  74
2.4.15 動態(tài)存儲類型  74
2.4.16  聲明局部變量  76
2.4.17  獲取和設(shè)置類型的默認(rèn)值  78
2.5  深入研究控制臺應(yīng)用程序  79
2.5.1  向用戶顯示輸出  79
2.5.2  從用戶那里獲取文本輸入  83
2.5.3  簡化控制臺的使用  84
2.5.4  獲取用戶的重要輸入  85
2.5.5  向控制臺應(yīng)用程序傳遞參數(shù)  86
2.5.6  使用參數(shù)設(shè)置選項  89
2.5.7  處理不支持API的平臺  90
2.6  理解async和await  92
2.7  實踐和探索  93
2.7.1  練習(xí)2.1:測試你掌握的知識  93
2.7.2  練習(xí)2.2:測試你對數(shù)字類型的了解  93
2.7.3  練習(xí)2.3:練習(xí)數(shù)字大小和范圍  94
2.7.4  練習(xí)2.4:探索主題  94
2.7.5  練習(xí)2.5:探索Spectre庫  94
2.8  本章小結(jié)  94
第3章  控制程序流程、轉(zhuǎn)換類型和處理異常  95
3.1  操作變量  95
3.1.1  理解二元運算符  95
3.1.2  理解一元運算符  96
3.1.3  理解三元運算符  96
3.1.4 二元算術(shù)運算符  98
3.1.5  賦值運算符  98
3.1.6 空值合并運算符  99
3.1.7 邏輯運算符  99
3.1.8 條件邏輯運算符  100
3.1.9 按位和二元移位運算符  101
3.1.10  其他運算符  102
3.2  理解選擇語句  103
3.2.1  使用if語句進(jìn)行分支  103
3.2.2  模式匹配與if語句  104
3.2.3  使用switch語句進(jìn)行分支  105
3.2.4  使用Visual Studio 2022向項目添加新項  106
3.2.5 模式匹配與switch語句  107
3.2.6  使用switch表達(dá)式簡化switch語句  109
3.3  理解迭代語句  110
3.3.1  while循環(huán)語句  110
3.3.2  do循環(huán)語句  111
3.3.3  for循環(huán)語句  111
3.3.4  foreach循環(huán)語句  112
3.4  在數(shù)組中存儲多個值  113
3.5  類型轉(zhuǎn)換  119
3.5.1  隱式和顯式地轉(zhuǎn)換數(shù)字  120
3.5.2 負(fù)數(shù)在二進(jìn)制中的表示  121
3.5.3 使用System.Convert類型進(jìn)行轉(zhuǎn)換  122
3.5.4  圓整數(shù)字和默認(rèn)的圓整原則  123
3.5.5  控制圓整規(guī)則  124
3.5.6  從任何類型轉(zhuǎn)換為字符串  124
3.5.7  從二進(jìn)制對象轉(zhuǎn)換為字符串  125
3.5.8  將字符串轉(zhuǎn)換為數(shù)字或日期和時間  126
3.6  處理異常  128
3.7  檢查溢出  132
3.7.1  使用checked語句拋出溢出異常  132
3.7.2  使用unchecked語句禁用編譯時溢出檢查  133
3.8  實踐和探索  134
3.8.1  練習(xí)3.1:測試你掌握的知識  134
3.8.2  練習(xí)3.2:探索循環(huán)和溢出  135
3.8.3  練習(xí)3.3:測試你對運算符的掌握程度  135
3.8.4 練習(xí)3.4:實踐循環(huán)和運算符  135
3.8.5 練習(xí)3.5:實踐異常處理  136
3.8.6  練習(xí)3.6:探索C# Polyglot Notebooks  136
3.8.7  練習(xí)3.7:探索主題  136
3.9  本章小結(jié)  137
第4章  編寫、調(diào)試和測試函數(shù)  138
4.1  編寫函數(shù)  138
4.1.1  理解頂級程序、函數(shù)和名稱空間  138
4.1.2 對于局部函數(shù),編譯器會自動生成什么  139
4.1.3  使用靜態(tài)函數(shù)定義分部程序  140
4.1.4 對于靜態(tài)函數(shù),編譯器會自動生成什么  141
4.1.5  乘法表示例  142
4.1.6  簡述實參與形參  144
4.1.7  編寫帶返回值的函數(shù)  145
4.1.8  將數(shù)字從基數(shù)轉(zhuǎn)換為序數(shù)  147
4.1.9  用遞歸計算階乘  149
4.1.10  使用XML注釋文檔化函數(shù)  151
4.1.11  在函數(shù)實現(xiàn)中使用lambda  152
4.2  在開發(fā)過程中進(jìn)行調(diào)試  154
4.2.1 創(chuàng)建帶有故意錯誤的代碼  154
4.2.2  設(shè)置斷點并開始調(diào)試  155
4.2.3  使用調(diào)試工具欄進(jìn)行導(dǎo)航  157
4.2.4  調(diào)試窗口  158
4.2.5  單步執(zhí)行代碼  158
4.2.6  在 Visual Studio Code 中使用集成終端進(jìn)行調(diào)試  159
4.2.7 自定義斷點  161
4.3  在開發(fā)期間進(jìn)行熱重載  163
4.3.1  使用Visual Studio 2022進(jìn)行熱重載  163
4.3.2  使用Visual Studio Code和dotnet watch命令進(jìn)行熱重載  164
4.4  在開發(fā)和運行時進(jìn)行日志記錄  165
4.4.1  理解日志記錄選項  165
4.4.2  使用Debug和Trace類型  165
4.4.3  配置跟蹤偵聽器  167
4.4.4  切換跟蹤級別  168
4.4.5  記錄有關(guān)源代碼的信息  174
4.5  單元測試  175
4.5.1  理解測試類型  176
4.5.2  創(chuàng)建需要測試的類庫  176
4.5.3  編寫單元測試  177
4.6  在函數(shù)中拋出并捕獲異常  180
4.6.1  理解使用錯誤和執(zhí)行錯誤  180
4.6.2  在函數(shù)中通常拋出異常  180
4.6.3 使用保護(hù)子句拋出異常  181
4.6.4 理解調(diào)用堆棧  181
4.6.5  在哪里捕獲異常  184
4.6.6  重新拋出異常  184
4.6.7  實現(xiàn)tester-doer模式和try模式  186
4.7  實踐和探索  187
4.7.1  練習(xí)4.1:測試你掌握的知識  187
4.7.2  練習(xí)4.2:編寫帶有調(diào)試和單元測試功能的函數(shù)  187
4.7.3  練習(xí)4.3:探索主題  188
4.8  本章小結(jié)  188
第5章  使用面向?qū)ο缶幊碳夹g(shù)構(gòu)建自己的類型  189
5.1  面向?qū)ο缶幊? 189
5.2  構(gòu)建類庫  190
5.2.1  創(chuàng)建類庫  190
5.2.2  理解文件作用域名稱空間  192
5.2.3 在名稱空間中定義類  192
5.2.4 理解類型訪問修飾符  193
5.2.5  理解成員  193
5.2.6  導(dǎo)入名稱空間以使用類型  194
5.2.7  實例化類  196
5.2.8  繼承System.Object  196
5.2.9 使用別名避免名稱空間沖突  197
5.3 在字段中存儲數(shù)據(jù)  198
5.3.1  定義字段  198
5.3.2 字段的類型  199
5.3.3 成員訪問修飾符  199
5.3.4  設(shè)置和輸出字段值  200
5.3.5 使用對象初始化器語法設(shè)置字段值  200
5.3.6  使用enum類型存儲值  201
5.3.7  使用enum類型存儲多個值  202
5.3.8  使用集合存儲多個值  203
5.3.9  理解泛型集合  203
5.3.10  使字段成為靜態(tài)字段  204
5.3.11  使字段成為常量  205
5.3.12  使字段只讀  206
5.3.13 在實例化時要求設(shè)置字段值  207
5.3.14 使用構(gòu)造函數(shù)初始化字段  208
5.4  使用方法和元組  211
5.4.1  從方法返回值  211
5.4.2  定義參數(shù)并將參數(shù)傳遞給方法  211
5.4.3  重載方法  212
5.4.4  傳遞可選參數(shù)  213
5.4.5 調(diào)用方法時的命名參數(shù)值  213
5.4.6  混用可選參數(shù)與必需參數(shù)  214
5.4.7  控制參數(shù)的傳遞方式  215
5.4.8  理解ref返回  216
5.4.9  使用元組組合多個返回值  217
5.4.10  使用局部函數(shù)實現(xiàn)功能  220
5.4.11  使用partial關(guān)鍵字拆分類  221
5.5  使用屬性和索引器控制訪問  222
5.5.1  定義只讀屬性  222
5.5.2  定義可設(shè)置的屬性  223
5.5.3  限制枚舉標(biāo)志的值  225
5.5.4  定義索引器  227
5.6  模式匹配和對象  228
5.6.1  模式匹配飛機(jī)乘客  228
5.6.2  C# 9及更高版本對模式匹配做了增強(qiáng)  230
5.7  使用record類型  231
5.7.1  init-only屬性  231
5.7.2  定義record類型  232
5.7.3  record類型的相等性  233
5.7.4  記錄中的位置數(shù)據(jù)成員  234
5.7.5 在類中定義主構(gòu)造函數(shù)  235
5.8  實踐和探索  236
5.8.1  練習(xí)5.1:測試你掌握的知識  236
5.8.2  練習(xí)5.2:練習(xí)使用訪問修飾符  237
5.8.3 練習(xí)5.3:探索主題  237
5.9  本章小結(jié)  237
第6章  實現(xiàn)接口和繼承類  238
6.1  建立類庫和控制臺應(yīng)用程序  238
6.2  靜態(tài)方法和重載運算符  240
6.2.1  使用方法實現(xiàn)功能  240
6.2.2  使用運算符實現(xiàn)功能  244
6.3 使用泛型安全地重用類型  246
6.3.1  使用非泛型類型  246
6.3.2  使用泛型類型  248
6.4  觸發(fā)和處理事件  249
6.4.1  使用委托調(diào)用方法  249
6.4.2  定義和處理委托  250
6.4.3  定義和處理事件  252
6.5  實現(xiàn)接口  254
6.5.1  公共接口  254
6.5.2  排序時比較對象  254
6.5.3  使用單獨的類比較對象  258
6.5.4  隱式和顯式的接口實現(xiàn)  259
6.5.5  使用默認(rèn)實現(xiàn)定義接口  260
6.6  使用引用類型和值類型管理內(nèi)存  262
6.6.1  理解棧內(nèi)存和堆內(nèi)存  262
6.6.2  定義引用類型和值類型  262
6.6.3  如何在內(nèi)存中存儲引用類型和值類型  263
6.6.4  理解裝箱  264
6.6.5  類型的相等性  265
6.6.6  定義struct類型  267
6.6.7  定義record struct類型  268
6.6.8  釋放非托管資源  269
6.6.9  確保調(diào)用Dispose方法  270
6.7  使用空值  271
6.7.1  使值類型可為空  271
6.7.2  了解與null相關(guān)的縮略詞  273
6.7.3  理解可空引用類型  273
6.7.4  控制可空性警告檢查特性  274
6.7.5  禁用null值和其他編譯器警告  274
6.7.6 聲明非可空變量和參數(shù)  275
6.7.7  檢查null  277
6.8  從類繼承  279
6.8.1  擴(kuò)展類以添加功能  280
6.8.2  隱藏成員  280
6.8.3  了解this和base關(guān)鍵字  281
6.8.4 覆蓋成員  281
6.8.5  從抽象類繼承  282
6.8.6  選擇接口還是抽象類  283
6.8.7 防止繼承和覆蓋  283
6.8.8  理解多態(tài)  284
6.9  在繼承層次結(jié)構(gòu)中進(jìn)行類型轉(zhuǎn)換  285
6.9.1  隱式類型轉(zhuǎn)換  286
6.9.2  顯式類型轉(zhuǎn)換  286
6.9.3  避免類型轉(zhuǎn)換異常  286
6.10  繼承和擴(kuò)展.NET類型  288
6.10.1  繼承異常  288
6.10.2  無法繼承時擴(kuò)展類型  289
6.11 總結(jié)自定義類型的選擇  291
6.11.1 自定義類型的分類及其功能  291
6.11.2 可變性與record類型  292
6.11.3 比較繼承與實現(xiàn)  293
6.11.4 回顧示例代碼  293
6.12  實踐和探索  295
6.12.1  練習(xí)6.1:測試你掌握的知識  295
6.12.2  練習(xí)6.2:練習(xí)創(chuàng)建繼承層次結(jié)構(gòu)  296
6.12.3  練習(xí)6.3:編寫更好的代碼  296
6.12.4  練習(xí)6.4:探索主題  296
6.13  本章小結(jié)  296
第7章  打包和分發(fā).NET類型  298
7.1  .NET 8簡介  298
7.2  了解.NET組件  300
7.2.1  程序集、NuGet包和名稱空間  300
7.2.2  Microsoft .NET project SDK  301
7.2.3  理解程序集中的名稱空間和類型  301
7.2.4  NuGet包  302
7.2.5  理解框架  302
7.2.6  導(dǎo)入名稱空間以使用類型  302
7.2.7  將C#關(guān)鍵字與.NET類型相關(guān)聯(lián)  303
7.2.8  使用.NET Standard在舊平臺之間共享代碼  306
7.2.9  理解不同SDK中類庫的默認(rèn)設(shè)置  306
7.2.10  創(chuàng)建.NET Standard 類庫  307
7.2.11  控制.NET SDK  308
7.2.12 混合使用SDK和目標(biāo)框架  309
7.3  發(fā)布用于部署的代碼  310
7.3.1  創(chuàng)建要發(fā)布的控制臺應(yīng)用程序  310
7.3.2  理解dotnet命令  312
7.3.3  獲取關(guān)于.NET及其環(huán)境的信息  313
7.3.4  使用dotnet CLI管理項目  313
7.3.5  發(fā)布自包含的應(yīng)用程序  314
7.3.6  發(fā)布單文件應(yīng)用  316
7.3.7  使用app trimming系統(tǒng)減小應(yīng)用程序的大小  316
7.3.8  控制構(gòu)建產(chǎn)物的生成位置  317
7.4 原生ATO編譯  318
7.4.1 本地AOT 的限制  318
7.4.2 反射與原生AOT  319
7.4.3 原生AOT的要求  319
7.4.4 為項目啟用原生AOT  320
7.4.5 構(gòu)建原生AOT項目  320
7.4.6 發(fā)布原生AOT項目  321
7.5 反編譯.NET程序集  322
7.5.1  使用Visual Studio 2022的ILSpy擴(kuò)展進(jìn)行反編譯  322
7.5.2  使用Visual Studio 2022查看源鏈接  325
7.5.3  不能在技術(shù)上阻止反編譯  326
7.6  為NuGet分發(fā)打包自己的庫  327
7.6.1  引用NuGet包  327
7.6.2  為NuGet打包庫  328
7.6.3  使用工具探索NuGet包  332
7.6.4  測試類庫包  333
7.7  使用預(yù)覽功能  334
7.7.1  需要預(yù)覽功能  335
7.7.2  使用預(yù)覽功能  335
7.7.3 方法攔截器  335
7.8  實踐和探索  336
7.8.1  練習(xí)7.1:測試你掌握的知識  336
7.8.2  練習(xí)7.2:探索主題  336
7.8.3  練習(xí)7.3:從.NET Framework移植到現(xiàn)代.NET  336
7.8.4 練習(xí) 7.4:創(chuàng)建源代碼生成器  336
7.8.5 練習(xí)7.5:探索PowerShell  336
7.8.6 練習(xí)7.6:提升.NET性能  337
7.9  本章小結(jié)  337
第8章  使用常見的.NET類型  338
8.1  處理數(shù)字  338
8.1.1  處理大的整數(shù)  338
8.1.2  處理復(fù)數(shù)  339
8.1.3 為游戲和類似應(yīng)用程序生成隨機(jī)數(shù)  340
8.1.4  生成GUID  342
8.2  處理文本  343
8.2.1  獲取字符串的長度  343
8.2.2  獲取字符串中的字符  344
8.2.3  拆分字符串  344
8.2.4  獲取字符串的一部分  344
8.2.5  檢查字符串的內(nèi)容  345
8.2.6  比較字符串值  345
8.2.7 連接、格式化和其他的字符串成員  347
8.2.8  高效地連接字符串  348
8.3  模式匹配與正則表達(dá)式  349
8.3.1  檢查作為文本輸入的數(shù)字  349
8.3.2  改進(jìn)正則表達(dá)式的性能  350
8.3.3  正則表達(dá)式的語法  350
8.3.4  正則表達(dá)式示例  351
8.3.5  拆分使用逗號分隔的復(fù)雜字符串  351
8.3.6  激活正則表達(dá)式語法著色功能  353
8.3.7  使用源生成器提高正則表達(dá)式的性能  355
8.4  在集合中存儲多個對象  357
8.4.1  所有集合的公共特性  357
8.4.2  使用列表  358
8.4.3 字典  361
8.4.4 集、堆棧和隊列  364
8.4.5  集合的Add和Remove方法  367
8.4.6 集合的排序  367
8.4.7  使用專門的集合  368
8.4.8  只讀集合、不可變集合和凍結(jié)集合  368
8.4.9 使用集合表達(dá)式初始化集合  372
8.4.10 集合的最佳實踐  372
8.5  使用Span、索引和范圍  373
8.5.1  通過Span高效地使用內(nèi)存  373
8.5.2  用索引類型標(biāo)識位置  374
8.5.3  使用Range類型標(biāo)識范圍  374
8.5.4  使用索引、范圍和Span  374
8.6 實踐和探索  375
8.6.1  練習(xí)8.1:測試你掌握的知識  375
8.6.2  練習(xí)8.2:練習(xí)正則表達(dá)式  375
8.6.3  練習(xí)8.3:練習(xí)編寫擴(kuò)展方法  376
8.6.4  練習(xí)8.4:使用網(wǎng)絡(luò)資源  376
8.6.5  練習(xí)8.5:探索主題  376
8.7  本章小結(jié)  376
第9章  處理文件、流和序列化  377
9.1  管理文件系統(tǒng)  377
9.1.1  處理跨平臺環(huán)境和文件系統(tǒng)  377
9.1.2  管理驅(qū)動器  380
9.1.3  管理目錄  382
9.1.4  管理文件  383
9.1.5  管理路徑  384
9.1.6  獲取文件信息  385
9.1.7  控制處理文件的方式  385
9.2  用流來讀寫  386
9.2.1  理解抽象和具體的流  386
9.2.2 構(gòu)建流管道  388
9.2.3  寫入文本流  388
9.2.4  寫入XML流  390
9.2.5  壓縮流  394
9.2.6 使用隨機(jī)訪問句柄進(jìn)行讀寫  396
9.3  編碼和解碼文本  397
9.3.1  將字符串編碼為字節(jié)數(shù)組  398
9.3.2  對文件中的文本進(jìn)行編碼和解碼  400
9.4  序列化對象圖  400
9.4.1  序列化為XML  401
9.4.2  生成緊湊的XML  404
9.4.3  反序列化XML文件  405
9.4.4  用JSON序列化  406
9.4.5  高性能的JSON處理  407
9.4.6 反序列化JSON文件  407
9.4.7  控制處理JSON的方式  408
9.5 使用環(huán)境變量  411
9.5.1 讀取所有環(huán)境變量  411
9.5.2 展開、設(shè)置和獲取環(huán)境變量  413
9.6  實踐和探索  415
9.6.1  練習(xí)9.1:測試你掌握的知識  415
9.6.2  練習(xí)9.2:練習(xí)序列化為XML  416
9.6.3 練習(xí)9.3:使用tar存檔  416
9.6.4 練習(xí)9.4:從Newtonsoft遷移到新的JSON  416
9.6.5  練習(xí)9.5:探索主題  416
9.7  本章小結(jié)  417
第10章  使用Entity Framework Core處理數(shù)據(jù)  418
10.1  理解現(xiàn)代數(shù)據(jù)庫  418
10.1.1 理解舊的實體框架  419
10.1.2 理解Entity Framework Core  419
10.1.3 理解數(shù)據(jù)庫優(yōu)先和代碼優(yōu)先  420
10.1.4 EF Core的性能改進(jìn)  420
10.1.5 使用示例關(guān)系數(shù)據(jù)庫  420
10.1.6 使用SQLite  421
10.1.7  使用SQL Server還是其他SQL系統(tǒng)  422
10.1.8  為Windows設(shè)置SQLite  422
10.1.9  為macOS和Linux設(shè)置SQLite  423
10.2 在.NET項目中設(shè)置EF Core  423
10.2.1 為使用EF Core創(chuàng)建控制臺應(yīng)用程序  423
10.2.2 為SQLite創(chuàng)建Northwind示例數(shù)據(jù)庫  423
10.2.3 使用SQLiteStudio管理Northwind示例數(shù)據(jù)庫  424
10.2.4 使用輕量級的ADO.NET數(shù)據(jù)庫提供程序  426
10.2.5 選擇EF Core數(shù)據(jù)庫提供程序  426
10.2.6 連接到命名的SQLite數(shù)據(jù)庫  427
10.2.7 定義Northwind數(shù)據(jù)庫上下文類  427
10.3  定義EF Core模型  428
10.3.1 使用EF Core約定定義模型  428
10.3.2 使用EF Core注解特性定義模型  429
10.3.3 使用EF Core Fluent API定義模型  431
10.3.4  理解數(shù)據(jù)播種和Fluent API  431
10.3.5 為Northwind表構(gòu)建EF Core模型  431
10.3.6  定義Category和Product實體類  432
10.3.7 向Northwind數(shù)據(jù)庫上下文類添加表  434
10.3.8 安裝dotnet-ef工具  435
10.3.9 使用現(xiàn)有數(shù)據(jù)庫搭建模型  436
10.3.10 自定義逆向工程模板  440
10.3.11 配置約定前模型  440
10.4  查詢EF Core模型  441
10.4.1 過濾結(jié)果中返回的實體  443
10.4.2 過濾和排序產(chǎn)品  445
10.4.3 獲取生成的SQL  446
10.4.4 記錄EF Core  447
10.4.5  根據(jù)特定于提供程序的值過濾日志  449
10.4.6  使用查詢標(biāo)記進(jìn)行日志記錄  449
10.4.7 獲取單個實體  450
10.4.8 使用Like進(jìn)行模式匹配  451
10.4.9 在查詢中生成隨機(jī)數(shù)  453
10.4.10 定義全局過濾器  454
10.5  使用EF Core加載和跟蹤模式  454
10.5.1 使用Include擴(kuò)展方法立即加載實體  454
10.5.2 啟用延遲加載  455
10.5.3 使用Load方法顯式加載實體  456
10.5.4 控制實體跟蹤  458
10.5.5 3種跟蹤場景  459
10.5.6 延遲加載未啟用跟蹤的查詢  460
10.6  使用EF Core修改數(shù)據(jù)  461
10.6.1 插入實體  462
10.6.2 更新實體  464
10.6.3 刪除實體  465
10.6.4 更高效地更新和刪除  466
10.6.5 池化數(shù)據(jù)庫環(huán)境  469
10.7  實踐和探索  469
10.7.1 練習(xí)10.1:測試你掌握的知識  470
10.7.2 練習(xí)10.2:練習(xí)使用不同的序列化格式導(dǎo)出數(shù)據(jù)  470
10.7.3 練習(xí)10.3:使用事務(wù)  470
10.7.4 練習(xí)10.4:探索代碼優(yōu)先EF Core模型  470
10.7.5 練習(xí)10.5:探索應(yīng)用程序機(jī)密  470
10.7.6 練習(xí)10.6:探索主題  471
10.7.7 練習(xí)10.7:探索NoSQL數(shù)據(jù)庫  471
10.8  本章小結(jié)  471
第11章  使用LINQ查詢和操作數(shù)據(jù)  472
11.1  編寫LINQ表達(dá)式  472
11.1.1 對比命令式語言和聲明式語言的特性  472
11.1.2 LINQ的組成  473
11.1.3 使用Enumerable類構(gòu)建LINQ表達(dá)式  473
11.2 LINQ的現(xiàn)實應(yīng)用  475
11.2.1 理解延遲執(zhí)行  475
11.2.2 使用Where擴(kuò)展方法過濾實體  477
11.2.3 以命名方法為目標(biāo)  479
11.2.4 通過刪除委托的顯式實例化來簡化代碼  480
11.2.5 以lambda表達(dá)式為目標(biāo)  480
11.2.6 具有默認(rèn)參數(shù)值的lambda表達(dá)式  480
11.3  排序及其他操作  481
11.3.1  使用OrderBy擴(kuò)展方法按單個屬性排序  481
11.3.2  使用ThenBy擴(kuò)展方法按后續(xù)屬性排序  481
11.3.3 按項自身排序  482
11.3.4 使用var或指定類型聲明查詢  482
11.3.5 根據(jù)類型進(jìn)行過濾  483
11.3.6 處理集合和bag  484
11.4  使用LINQ與EF Core  486
11.4.1 為探索LINQ to Entities來創(chuàng)建一個控制臺應(yīng)用程序  486
11.4.2 構(gòu)建EF Core模型  487
11.4.3 序列的過濾和排序  489
11.4.4 將序列投影到新的類型中  492
11.5  連接、分組和查找  493
11.5.1  連接序列  494
11.5.2  分組連接序列  495
11.5.3  分組查找  496
11.6  聚合和分頁序列  498
11.6.1 檢查空序列  500
11.6.2 小心使用Count  500
11.6.3 使用LINQ分頁  502
11.6.4 使用語法糖美化LINQ語法  505
11.7  實踐和探索  506
11.7.1 練習(xí)11.1:測試你掌握的知識  506
11.7.2 練習(xí)11.2:練習(xí)使用LINQ進(jìn)行查詢  507
11.7.3 練習(xí)11.3:在并行LINQ中使用多線程  507
11.7.4 練習(xí)11.4:使用LINQ to XML  507
11.7.5 練習(xí)11.5:創(chuàng)建自己的LINQ擴(kuò)展方法  507
11.7.6 練習(xí)11.6:探索主題  508
11.8  本章小結(jié)  508
第12章  使用ASP.NET Core進(jìn)行Web開發(fā)  509
12.1  理解ASP.NET Core  509
12.1.1  經(jīng)典ASP.NET與現(xiàn)代ASP.NET Core的對比  510
12.1.2  使用ASP.NET Core構(gòu)建網(wǎng)站  511
12.1.3  ASP.NET Core中使用的不同文件類型  511
12.1.4  使用內(nèi)容管理系統(tǒng)構(gòu)建網(wǎng)站  512
12.1.5  使用SPA框架構(gòu)建Web應(yīng)用程序  512
12.1.6  構(gòu)建Web服務(wù)和其他服務(wù)  513
12.2  結(jié)構(gòu)化項目  513
12.3  建立實體模型供本書剩余部分章節(jié)使用  515
12.3.1  創(chuàng)建Northwind數(shù)據(jù)庫  515
12.3.2  使用SQLite創(chuàng)建實體模型類庫  515
12.3.3  使用SQLite為數(shù)據(jù)庫上下文創(chuàng)建類庫  517
12.3.4  自定義模型并定義擴(kuò)展方法  519
12.3.5  注冊依賴服務(wù)的作用域  522
12.3.6  使用SQL Server為實體模型創(chuàng)建類庫  522
12.3.7  改進(jìn)類到表的映射  522
12.3.8  測試類庫  524
12.4  了解Web開發(fā)  527
12.4.1  理解HTTP  527
12.4.2  使用Google Chrome瀏覽器發(fā)出HTTP請求  528
12.4.3  了解客戶端Web開發(fā)技術(shù)  530
12.5  實踐和探索  530
12.5.1  練習(xí)12.1:測試你掌握的知識  530
12.5.2  練習(xí)12.2:了解Web開發(fā)中常用的縮寫  531
12.5.3  練習(xí)12.3:探索主題  531
12.6  本章小結(jié)  531
第13章  使用ASP.NET Core Razor Pages構(gòu)建網(wǎng)站  532
13.1  了解ASP.NET Core  532
13.1.1  創(chuàng)建空的ASP.NET Core項目  532
13.1.2  測試和保護(hù)網(wǎng)站  535
13.1.3  啟用更強(qiáng)的安全性并重定向到安全連接  538
13.1.4  控制托管環(huán)境  539
13.1.5  使網(wǎng)站能夠提供靜態(tài)內(nèi)容  540
13.2  了解ASP.NET Core Razor Pages  543
13.2.1  啟用Razor Pages  543
13.2.2  給Razor Pages添加代碼  544
13.2.3  對Razor Pages使用共享布局  545
13.2.4  臨時存儲數(shù)據(jù)  547
13.2.5  使用后臺代碼文件與Razor Pages  549
13.2.6  配置ASP.NET Core項目中包含的文件  551
13.2.7  項目文件構(gòu)建操作  552
13.3  使用Entity Framework Core與ASP.NET Core  553
13.3.1  將Entity Framework Core配置為服務(wù)  553
13.3.2  啟用模型以插入實體  555
13.3.3  定義用來插入新供應(yīng)商的表單  556
13.3.4  將依賴服務(wù)注入Razor Pages中  556
13.4  配置服務(wù)和HTTP請求管道  557
13.4.1  了解端點路由  557
13.4.2 配置端點路由  557
13.4.3 查看項目中的端點路由配置  557
13.4.4 配置HTTP管道  559
13.4.5 總結(jié)關(guān)鍵的中間件擴(kuò)展方法  560
13.4.6 可視化HTTP管道  560
13.4.7 實現(xiàn)匿名內(nèi)聯(lián)委托作為中間件  561
13.5  實踐和探索  563
13.5.1 練習(xí)13.1:測試你掌握的知識  563
13.5.2 練習(xí)13.2:使用Razor類庫  563
13.5.3 練習(xí)13.3:啟用HTTP/3和對請求解壓縮的支持  563
13.5.4 練習(xí)13.4:練習(xí)構(gòu)建數(shù)據(jù)驅(qū)動的網(wǎng)頁  563
13.5.5 練習(xí)13.5:練習(xí)為函數(shù)構(gòu)建Web頁面  564
13.5.6 練習(xí)13.6:Bootstrap簡介  564
13.5.7 練習(xí)13.7:探索主題  564
13.5.8 練習(xí)13.8:使用MVC模式構(gòu)建網(wǎng)站  564
13.6  本章小結(jié)  565
第14章  構(gòu)建和消費Web服務(wù)  566
14.1  使用ASP.NET Core Web API構(gòu)建Web服務(wù)  566
14.1.1 理解Web服務(wù)縮寫詞  566
14.1.2 理解Web API的HTTP請求和響應(yīng)  567
14.1.3 創(chuàng)建ASP.NET Core Web API項目  569
14.1.4 檢查Web服務(wù)的功能  572
14.2  為Northwind示例數(shù)據(jù)庫創(chuàng)建Web服務(wù)  573
14.2.1 注冊依賴服務(wù)  574
14.2.2 創(chuàng)建帶實體緩存的數(shù)據(jù)存儲庫  575
14.2.3 路由Web服務(wù)  578
14.2.4  路由約束  578
14.2.5  ASP.NET Core 8中的短路路由  579
14.2.6  ASP.NET Core 8中改進(jìn)的路由工具  579
14.2.7  理解操作方法的返回類型  579
14.2.8 配置客戶存儲庫和Web API控制器  580
14.2.9 指定問題的細(xì)節(jié)  584
14.2.10 控制XML序列化  585
14.3  記錄和測試Web服務(wù)  586
14.3.1 使用瀏覽器測試GET請求  586
14.3.2  使用HTTP/REST工具發(fā)出GET請求  587
14.3.3  使用HTTP/REST工具發(fā)出其他請求  588
14.3.4 傳遞環(huán)境變量  589
14.3.5 理解Swagger  590
14.3.6 使用Swagger UI測試請求  590
14.3.7 啟用HTTP日志記錄  593
14.3.8 W3CLogger支持記錄額外的請求頭  595
14.4  使用HTTP客戶端消費Web服務(wù)  596
14.4.1 了解HttpClient類  596
14.4.2 使用HttpClientFactory配置HTTP客戶端  596
14.4.3 在控制器中以JSON格式獲取客戶  596
14.4.4 啟動多個項目  599
14.4.5 啟動Web服務(wù)和MVC客戶端項目  600
14.5  實踐和探索  601
14.5.1 練習(xí)14.1:測試你掌握的知識  601
14.5.2 練習(xí)14.2:練習(xí)使用HttpClient創(chuàng)建和刪除客戶  601
14.5.3 練習(xí)14.3:為Web服務(wù)實現(xiàn)高級特性  601
14.5.4 練習(xí)14.4:使用最小API構(gòu)建Web服務(wù)  602
14.5.5 練習(xí)14.5:探索主題  602
14.6  本章小結(jié)  602
第15章  使用Blazor構(gòu)建用戶界面  603
15.1  Blazor的歷史  603
15.1.1 JavaScript和它的朋友們  603
15.1.2 Silverlight——使用插件的C#和.NET  604
15.1.3 WebAssembly——Blazor的目標(biāo)  604
15.1.4 .NET 7和更早版本中的Blazor托管模型  604
15.1.5 .NET 8統(tǒng)一了Blazor托管模型  604
15.1.6 理解Blazor組件  605
15.1.7 比較Blazor和Razor  606
15.2 Blazor Web App項目模板簡介  606
15.2.1 創(chuàng)建一個Blazor Web App項目  606
15.2.2 Blazor的路由、布局和導(dǎo)航  608
15.2.3 運行Blazor Web App項目模板  614
15.3  使用Blazor構(gòu)建組件  615
15.3.1 定義和測試簡單的Blazor組件  615
15.3.2 使用Bootstrap圖標(biāo)  616
15.3.3 將組件轉(zhuǎn)換成可路由的頁面組件  617
15.3.4 將實體放入組件  617
15.3.5 為Blazor組件抽象服務(wù)  618
15.3.6  啟用流式渲染  622
15.3.7 使用EditForm組件定義表單  623
15.3.8 構(gòu)建客戶詳細(xì)信息組件  623
15.3.9 構(gòu)建創(chuàng)建、編輯和刪除客戶的組件  625
15.3.10 啟用服務(wù)器端交互  627
15.3.11 測試客戶組件  627
15.4 使用WebAssembly啟用客戶端執(zhí)行  628
15.5  實踐和探索  628
15.5.1 練習(xí)15.1:測試你掌握的知識  628
15.5.2 練習(xí)15.2:通過創(chuàng)建乘法表組件進(jìn)行練習(xí)  629
15.5.3 練習(xí)15.3:通過創(chuàng)建國家導(dǎo)航項進(jìn)行練習(xí)  629
15.5.4 練習(xí)15.4:增強(qiáng)Blazor應(yīng)用程序  630
15.5.5 練習(xí)15.5:使用開源的Blazor組件庫  630
15.5.6 練習(xí)15.6:探索主題  630
15.6  本章小結(jié)  630
第16章  結(jié)語  631
16.1 C#和.NET學(xué)習(xí)之旅的下一步  631
16.1.1 使用設(shè)計指南來完善技能  631
16.1.2 本書的配套圖書  632
16.1.3 可以讓學(xué)習(xí)更深入的其他圖書  633
16.2 祝你好運  633
16.3 分享意見  633
——?以下內(nèi)容可掃描封底二維碼下載?——
附錄A  練習(xí)題答案  634
使用MVC模式構(gòu)建網(wǎng)站  653

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號