C# 碼農筆記 — 從第一行代碼到項目實戰

C# 碼農筆記 — 從第一行代碼到項目實戰

作者: 周家安
出版社: 清華大學
出版在: 2022-08-01
ISBN-13: 9787302602866
ISBN-10: 7302602867





內容描述


本書將以基礎知識為主,但同時也希望能夠涉及到C#5和.net 4.5相關的技術和實用技巧。由於C#僅僅是.net平臺所支持的其中一種語言,因此除了語言自身的知識外,我們也應當以統一的視角去對待,即將C#的知識與.net框架的知識進行融合。本書主要以通俗易懂的語氣來向讀者介紹並展示C#語言的各種優勢和實用知識。同時,本書會為各個知識點配有簡單而豐富的例子,側重點是實戰。書中的例子既可作為演示相關知識所用,讀者也可以將其作為鞏固練習。 本書內容包括:C#語言基礎,但不全講,因為微軟公司為我們提供了一套很豐富的語言規範文檔,本書會順帶告知讀者如何運用官方的教程來參考和學習;另外,本書與.net技術融合,從基礎的類型到數組、集合、泛型,再到類型轉換以及協變和逆變的運用、控制台應用程序、窗體應用程序、WPF、數據管理、文件處理、應用程序域管理、反射等技術也會一並講解。


目錄大綱


第1章  準備工作 1
1.1  為什麽要編寫程序 1
1.2  C#與.NET的關系 2
1.3  強大的開發工具——Visual Studio 2
1.3.1  下載和安裝 2
1.3.2  認識Visual Studio 3
1.3.3  快捷鍵 4
1.3.4  放置子窗口 4
1.3.5  自動隱藏窗口 5
1.3.6  巧用快速啟動 5
1.3.7  個性化設置 7
1.4  創建第一個應用程序 9
1.5  解決方案與項目的關系 12
第2章  語法基礎 13
2.1  代碼的基本結構 13
2.2  命名空間 14
2.2.1  為什麽要使用命名空間 14
2.2.2  如何訪問命名空間中的成員 14
2.2.3  引入命名空間 15
2.2.4  using static指令 16
2.3  Main入口點 16
2.3.1  程序代碼真的從Main方法開始執行嗎 17
2.3.2  如何選擇入口點 17
2.4  變量與常量 18
2.4.1  變量 18
2.4.2  常量 20
2.5  命名規則 20
2.6  運算符 21
2.6.1  簡單運算 21
2.6.2  自增和自減運算 22
2.6.3  位運算 23
2.6.4  比較運算 24
2.7  流程控制 25
2.7.1  順序執行 25
2.7.2  有選擇地執行 25
2.7.3  循環執行 28
2.8  註釋 32
2.9  基本數據類型 33
2.10  頂層語句 35
第3章  面向對象編程 37
3.1  類 37
3.1.1  字段 38
3.1.2  屬性 38
3.1.3  方法 40
3.1.4  構造函數與析構函數 42
3.1.5  record類型 44
3.2  結構 45
3.3  引用類型與值類型 47
3.4  ref參數與out參數 49
3.5  方法重載 53
3.6  靜態類與靜態成員 54
3.7  只讀字段 55
3.8  可訪問性與繼承性 56
3.8.1  可訪問性 56
3.8.2  繼承性 58
3.8.3  註意可訪問性要一致 60
3.8.4  隱藏基類的成員 61
3.8.5  覆寫基類成員 61
3.8.6  阻止類被繼承 63
3.9  抽象類 64
3.10  接口 66
3.10.1  定義接口 67
3.10.2  接口與多繼承 67
3.10.3  實現接口 68
3.10.4  顯式實現接口 69
3.11  擴展方法 70
3.12  委托與事件 71
3.12.1  定義和使用委托 71
3.12.2  將方法作為參數傳遞 73
3.12.3  使用事件 74
3.13  枚舉 78
3.13.1  使用枚舉類型 78
3.13.2  獲取枚舉的值列表 80
3.13.3  獲取枚舉中各成員名稱 81
3.13.4  枚舉的位運算 82
3.14  特性 84
3.14.1  自定義特性 85
3.14.2  將特性應用到方法的返回值 86
3.14.3  通過反射技術檢索特性 87
3.15  數組 88
3.15.1  定義數組的幾種方法 88
3.15.2  多維數組 89
3.15.3  嵌套數組 91
3.15.4  復制數組 93
3.15.5  反轉數組 94
3.15.6  更改數組的大小 95
3.15.7  在數組中查找元素 95
3.15.8  靈活使用ArrayList類 98
第4章  控制台應用程序 100
4.1  輸出文本信息 100
4.2  獲取鍵盤輸入 102
4.2.1  Read方法 102
4.2.2  ReadKey方法 103
4.2.3  ReadLine方法 103
4.3  命令行參數 104
4.4  控制台窗口的外觀 105
4.5  控制台窗口的大小和位置 106
4.6  響應CancelKeyPress事件 109
第5章  字符串處理與數學運算 111
5.1  對象的字符串表示形式 111
5.1.1  重寫ToString方法 111
5.1.2  擴展方法 113
5.2  字符串的串聯與拆分 114
5.2.1  使用+運算符串聯字符串 114
5.2.2  使用Join方法拼接字符串數組 115
5.2.3  使用Concat方法創建字符串 115
5.2.4  使用StringBuilder類創建字符串 116
5.2.5  使用Split方法拆分字符串 118
5.3  轉義字符 119
5.4  英文字母的大小寫轉換 121
5.5  Parse和TryParse方法 121
5.6  查找和修改字符串 123
5.6.1  查找索引 123
5.6.2  存在性查找 124
5.6.3  字符串的增、刪、改 125
5.6.4  填充字符串 126
5.7  格式化字符串 127
5.7.1  IFormatProvider接口 127
5.7.2  區域性相關的信息 128
5.7.3  字符串格式化 129
5.8  字符串復合格式化 134
5.9  字符串內插 136
5.10  生成隨機數 136
5.11  Math類與常用的數學運算 137
5.12  常見的時間計算 138
第6章  類型轉換 140
6.1  隱式轉換 140
6.2  顯式轉換 142
6.3  可以為null的值類型 143
6.4  引用類型的兼容性轉換 144
6.5  類型轉換幫助器 146
6.6  自定義轉換 148
6.7  使用is運算符進行類型轉換 150
第7章  泛型、集合與變體 151
7.1  泛型 151
7.1.1  泛型類 152
7.1.2  泛型接口 153
7.1.3  泛型與類型成員 154
7.1.4  泛型與委托 155
7.1.5  泛型約束 157
7.2  集合 160
7.2.1  普通集合 160
7.2.2  泛型集合 162
7.2.3  字典 168
7.3  自定義排序 172
7.4  變體 175
7.4.1  協變與逆變 176
7.4.2  類型參數的輸入與輸出 177
7.4.3  協變與逆變的判斷技巧 180
 
第8章  糾錯與單元測試 181
8.1  實時糾正語法錯誤 181
8.2  代碼調試 182
8.2.1  斷點法 182
8.2.2  輸出信息法 184
8.3  斷言 186
8.4  使用日誌文件 188
8.5  異常處理 191
8.6  單元測試 195
第9章  匿名方法與Lambda表達式 199
9.1  匿名方法 199
9.2  Lambda表達式 200
9.2.1  用於賦值 200
9.2.2  用於參數傳遞 201
9.2.3  棄元與Lambda表達式 204
第10章  集成化查詢 206
10.1  LINQ基本語法 206
10.1.1  對查詢結果類型的巧妙處理 207
10.1.2  延遲執行與強制立即執行 208
10.2  篩選 210
10.3  排序 211
10.4  分組 212
10.5  更復雜的查詢 216
10.5.1  動態創建類型 216
10.5.2  聯合查詢 217
10.5.3  嵌套查詢 222
第11章  Windows窗體應用程序 225
11.1  Windows窗體應用程序的基本結構 225
11.1.1  客戶區域 225
11.1.2  控件 226
11.1.3  應用程序項目 226
11.1.4  Windows消息循環 227
11.1.5  創建一個Windows窗體應用程序 230
11.2  ApplicationContext類 231
11.3  窗體設計器 233
11.4  控件的基類——Control 237
11.4.1  示例:設置控件的位置和大小 238
11.4.2  示例:設置控件的前景色和背景色 241
11.4.3  示例:調整控件的Z順序 242
11.5  常規控件 245
11.5.1  共享事件處理程序 245
11.5.2  製作“用戶登錄”窗口 247
11.5.3  CheckBox與RadioButton示例 249
11.5.4  使用ListBox控件呈現對象列表 251
11.5.5  自行繪制列表控件的項 256
11.5.6  組合框 258
11.5.7  TextBox的自動完成功能 260
11.5.8  多視圖列表 262
11.5.9  圖像呈現控件 266
11.5.10  實時報告進度 271
11.5.11  選擇日期和時間 275
11.5.12  規範用戶輸入 277
11.6  容器控件 281
11.6.1  在容器內部顯示滾動條 281
11.6.2  分組面板 282
11.6.3  網格佈局面板 283
11.6.4  選項卡 286
11.6.5  自動排列內容的面板 288
11.7  工具欄和菜單 290
11.7.1  工具欄 290
11.7.2  菜單欄 293
11.7.3  上下文菜單 296
11.7.4  自定義承載控件 297
11.8  對話框 300
11.8.1  “打開文件”和“保存文件”對話框 300
11.8.2  字體選擇對話框 303
11.8.3  顏色選擇對話框 304
11.8.4  自定義對話框 305
11.9  用戶控件 309
11.10  自定義控件 310
第12章  WPF應用程序 315
12.1  WPF應用程序項目結構 315
12.2  XAML基礎 318
12.2.1  XAML命名空間 318
12.2.2  代碼隱藏 319
12.2.3  標記擴展 319
12.2.4  內容屬性 321
12.3  依賴項屬性 322
12.3.1  定義和使用依賴項屬性 323
12.3.2  使用元數據 325
12.3.3  使用已註冊的依賴項屬性 329
12.3.4  只讀的依賴項屬性 331
12.3.5  附加屬性 333
12.4  路由事件 335
12.4.1  路由策略 338
12.4.2  註冊路由事件的類處理程序 340
12.5  認識WPF控件 342
12.5.1  Control類 342
12.5.2  內容控件 345
12.5.3  輸入控件 352
12.6  數據綁定與視圖呈現 353
12.6.1  用於數據綁定的XAML擴展標記 354
12.6.2  使用INotifyPropertyChanged接口 359
12.6.3  上下文綁定 363
12.6.4  綁定轉換器 368
12.6.5  數據集合控件 369
12.6.6  數據模板 374
12.6.7  數據視圖 381
12.6.8  ObservableCollection集合 389
12.7  佈局 391
12.7.1  Panel類 391
12.7.2  網格佈局 393
12.7.3  棧佈局 395
12.7.4  停靠面板 396
12.7.5  絕對定位 397
12.7.6  自動換行 398
12.7.7  Z順序 399
12.8  用戶控件與自定義控件 400
12.9  樣式與資源 406
12.9.1  樣式中的觸發器 408
12.9.2  資源的有效範圍 409
12.9.3  合並資源字典 411
12.9.4  靜態資源與動態資源 413
12.10  圖形 414
12.10.1  Shape類 415
12.10.2  基本圖形 418
12.11  動畫 420
12.11.1  演示圖板 420
12.11.2  簡單動畫與關鍵幀動畫 422
第13章  異步編程 425
13.1  為什麽要使用異步編程 425
13.2  使用Thread類進行異步編程 428
13.3  線程鎖 429
13.4  並行任務 432
13.4.1  啟動簡單的並行任務 432
13.4.2  Task與Task類 436
13.4.3  創建可取消的Task 437
13.5  async和await關鍵字 439
13.6  ThreadLocal 443
13.7  AsyncLocal 444
13.8  通道 446
13.8.1  Channel 446
13.8.2  ChannelWriter與ChannelReader 446
13.8.3  一個簡單的示例 446
13.8.4  背壓模式 447
第14章  系統信息管理 449
14.1  管理進程 449
14.1.1  管理正在運行的進程 449
14.1.2  啟動新進程 452
14.1.3  重定向輸入/輸出流 453
14.2  管理服務 455
14.3  WMI查詢 461
14.4  讀取系統參數 465
14.4.1  Environment類 465
14.4.2  SystemInformation類 466
14.4.3  用於WPF的系統信息類 467
14.5  寫入事件日誌 468
第15章  文件與流 470
15.1  創建和刪除目錄 470
15.2  創建和刪除文件 471
15.3  流 473
15.3.1  讀寫文件 473
15.3.2  內存流 477
15.4  內存映射文件 479
15.5  監控文件系統的變化 482
15.6  獨立存儲 483
15.7  壓縮與解壓縮 486
第16章  序列化與反序列化 490
16.1  二進制序列化 490
16.2  XML序列化 493
16.2.1  簡單實現XML序列化和反序列化 493
16.2.2  自定義XML文檔的節點 494
16.3  數據協定 497
16.4  JSON序列化 500
16.5  System.Text.Json 502
16.5.1  JsonSerializer 502
16.5.2  自定義轉換器 503
16.5.3  自定義屬性名稱 505
第17章  程序集與反射 506
17.1  類庫 506
17.2  反射技術基礎 509
17.2.1  動態加載程序集 509
17.2.2  獲取類型信息 510
17.2.3  動態創建類型實例 511
17.2.4  動態調用類型成員 514
第18章  網絡編程 518
18.1  Socket編程 518
18.1.1  Socket類 519
18.1.2  TcpListener類與TcpClient類 522
18.1.3  UdpClient類 524
18.2  HTTP通信 526
18.2.1  HttpWebRequest類與HttpWebResponse類 527
18.2.2  WebClient類 528
18.2.3  HttpClient類 529
18.3  獲取網絡接口信息 532
18.4  向目標電腦發送Ping命令 533
18.5  用SMTP發送電子郵件 534
第19章  互操作性 536
19.1  調用Win32 API函數 536
19.2  調用Linux系統中的庫函數 539
第20章  綜合實例 540
20.1  照片面積計算器 540
20.1.1  數據模型準備 540
20.1.2  讓用戶選擇照片文件 544
20.1.3  計算所選照片的總面積 545
20.1.4  語音朗讀計算結果 545
20.1.5  實現日誌文件的寫入 545
20.2  文件加密與解密工具 546
20.2.1  密碼的處理 546
20.2.2  提取Key和IV 546
20.2.3  加密與解密 547




相關書籍

網頁程式設計 ASP.NET MVC 5.x 範例完美演繹, 4/e (適用Visual C# 2022/2019)

作者 聖殿祭司 奚江華

2022-08-01

C# 項目開發實戰密碼

作者 扶松柏

2022-08-01

Concurrency in .NET: Modern patterns of concurrent and parallel programming (Paperback)

作者 Riccardo Terrell

2022-08-01