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

周家安

  • 出版商: 清華大學
  • 出版日期: 2022-08-01
  • 定價: $768
  • 售價: 8.5$653 (限時優惠至 2024-12-31)
  • 語言: 簡體中文
  • ISBN: 7302602867
  • ISBN-13: 9787302602866
  • 相關分類: C#
  • 立即出貨

  • C# 碼農筆記 : 從第一行代碼到項目實戰-preview-1
  • C# 碼農筆記 : 從第一行代碼到項目實戰-preview-2
  • C# 碼農筆記 : 從第一行代碼到項目實戰-preview-3
C# 碼農筆記 : 從第一行代碼到項目實戰-preview-1

買這商品的人也買了...

相關主題

商品描述

本書將以基礎知識為主,但同時也希望能夠涉及到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<T>集合 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<TResult>類 436

13.4.3  創建可取消的Task 437

13.5  async和await關鍵字 439

13.6  ThreadLocal<T> 443

13.7  AsyncLocal<T> 444

13.8  通道 446

13.8.1  Channel<T> 446

13.8.2  ChannelWriter<T>與ChannelReader<T> 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