內容簡介
本書共分為13章,每一章側重於特定主題的C#解決方案。具體內容包括:類和泛型,集合、枚舉器和疊代器,數據類型,語言集成查詢和lambda表達式,調試和異常處理,反射和動態編程,正則表達式,檔案系統I/O,網路和Web,XML,安全,執行緒、同步和並發,工具箱。本書使用大量範例,幫助開發人員快速理解並解決現實中的問題。
圖書目錄
第 1章 類和泛型 1
1.0 簡介 1
1.1 創建聯合類型的結構 3
1.2 使類型可排序 5
1.3 使類型可查找 9
1.4 從一個方法返回多個數據項 12
1.5 解析命令行參數 15
1.6 在運行時初始化常量欄位 25
1.7 構建可克隆的類 28
1.8 確保對象的處置 31
1.9 確定何時何處使用泛型 33
1.10 理解泛型類型 34
1.11 反轉有序列表中的內容 41
1.12 約束類型參數 43
1.13 將泛型變數初始化為默認值 46
1.14 向生成的實體中添加鉤子 48
1.15 控制如何觸發多播委託中的一個委託 50
1.16 在C#中使用閉包 56
1.17 使用函式對象在列表中執行多種操作 61
1.18 控制結構類型欄位初始化 64
1.19 以更簡潔的方式檢查null值 68
第 2章 集合、枚舉器和疊代器 72
2.0 簡介 72
2.1 尋找List中的重複數據項 74
2.2 保持List有序 78
2.3 對Dictionary 的鍵和/或值排序 80
2.4 創建具有**小值和**大值邊界的Dictionary 82
2.5 在應用程式會話間持久化一個集合 84
2.6 測試Array或List中的每個元素 86
2.7 創建自定義枚舉器 88
2.8 處理finally語句塊和疊代器 91
2.9 在類中實現嵌套的foreach功能 95
2.10 使用執行緒安全的字典進行並發訪問,不手動加鎖 99
第3章 數據類型 106
3.0 簡介 106
3.1 把二進制數據編碼為base64格式 108
3.2 解碼base64編碼的二進制數據 109
3.3 把作為byte[]返回的字元串轉換為字元串 110
3.4 把字元串傳遞給只接受byte[]的方法 112
3.5 確定一個字元串是否為有效的數字 113
3.6 捨入浮點值 114
3.7 選擇一種捨入算法 115
3.8 安全地執行窄化數據轉換 116
3.9 測試有效的枚舉值 118
3.10 在位掩碼中使用枚舉成員 120
3.11 確定是否設定了一個或多個枚舉標誌 122
4.0 簡介 126
4.1 查詢訊息佇列 128
4.2 對數據使用集合語義 132
4.3 利用LINQ to SQL重用參數化查詢 136
4.4 以文化敏感的方式對結果排序 138
4.5 添加用於LINQ的函式式擴展 141
4.6 跨資料庫執行查詢和聯接 144
4.7 利用LINQ查詢配置檔案 147
4.8 從資料庫直接創建XML檔案 150
4.9 有選擇地輸出查詢結果 162
4.10 將LINQ用於不支持IEnumerable的集合 165
4.11 執行高 級接口查找 167
4.12 使用lambda表達式 168
4.13 在lambda表達式中使用不同的參數修飾符 173
4.14 用並行來加速LINQ操作 176
第5章 調試和異常處理 187
5.0 簡介 187
5.1 知道何時捕獲並重新引發異常 193
5.2 處理通過反射調用的方法引發的異常 194
5.3 創建新的異常類型 197
5.4 在首 次異常上中斷 204
5.5 處理從異步委託中引發的異常 209
5.6 利用Exception.Data為異常提供所需的額外信息 211
5.7 在WinForms應用程式中處理未經處理的異常 213
5.8 在WPF應用程式中處理未經處理的異常 214
5.9 確定一個進程是否停止了回響 217
5.10 在應用程式中使用事件日誌 219
5.11 監視事件日誌中的特定條目 229
5.12 實現一個簡單的性能計數器 230
5.13 為類創建自定義的調試顯示 233
5.14 跟蹤異常從何而來 235
5.15 在異步情境下處理異常 237
5.16 有選擇地處理異常 243
第6章 反射和動態編程 247
6.0 簡介 247
6.1 列出引用的程式集 248
6.2 確定程式集中的類型特徵 252
6.3 確定繼承特徵 256
6.4 使用反射調用成員 261
6.5 訪問局部變數信息 264
6.6 創建一個泛型類型 267
6.7 使用dynamic與使用object 268
6.8 動態構建對象 271
6.9 使對象可擴展 275
第7章 正則表達式 284
7.0 簡介 284
7.1 從MatchCollection中提取組 285
7.2 驗證正則表達式的語法 288
7.3 增強基本的字元串替換函式 289
7.4 實現一個更好的分詞器 292
7.5 返回匹配所在的整行內容 293
7.6 找到特定次數的匹配 297
7.7 使用常見模式 299
第8章 檔案系統I/O 303
8.0 簡介 303
8.1 使用通配符查找和檔案 304
8.2 獲取樹 309
8.3 解析路徑 313
8.4 啟動並與控制台工具互動 314
8.5 鎖定檔案的一部分 316
8.6 等待檔案系統中的動作發生 320
8.7 比較兩個可執行模組的版本信息 322
8.8 查詢系統上所有驅動器的信息 325
8.9 壓縮和解壓縮檔案 327
第9章 網路和Web 337
9.0 簡介 337
9.1 處理Web伺服器錯誤 338
9.2 與Web伺服器通信 339
9.3 通過代理伺服器 341
9.4 從一個URL獲取HTML 343
9.5 使用Web瀏覽器控制項 344
9.6 以編程方式預構建一個ASP.NET網站 346
9.7 為Web套用對數據進行轉義和取消轉義 349
9.8 檢查Web伺服器的自定義錯誤頁 351
9.9 編寫一個TCP伺服器 355
9.10 編寫一個TCP客戶端 362
9.11 模擬表單執行 370
9.12 通過HTTP傳輸數據 373
9.13 使用命名管道進行通信 377
9.14 以編程方式傳送ping 386
9.16 使用套接字掃描機器的連線埠 388
9.17 使用當前的網際網路連線設定 392
9.18 使用FTP傳輸檔案 398
第 10章 XML 401
10.0 簡介 401
10.1 以文檔順序讀取和訪問XML數據 401
10.2 查詢XML文檔的內容 405
10.3 驗證XML 409
10.4 檢測對XML文檔的修改 413
10.5 處理XML字元串中的無效字元 416
10.6 轉換XML 419
10.7 驗證修改過的XML文檔而無需重新載入 427
10.8 擴展轉換 430
10.9 從現有XML檔案批量獲取架構 436
10.10 將參數傳遞給轉換 438
第 11章 安全 443
11.0 簡介 443
11.1 加密和解密字元串 443
11.2 加密和解密檔案 447
11.3 清理密碼算法信息 452
11.4 避免字元串在傳輸或靜止時被篡改 454
11.5 保證安全斷言的安全 460
11.6 驗證是否已授予程式集特定許可權 462
11.7 **小化程式集的攻擊面 463
11.8 獲得安全和/或審計信息 464
11.9 授權或撤銷對檔案或註冊表項的訪問 469
11.10 使用安全字元串保護字元串數據 472
11.11 保護流數據 474
11.12 加密web.config信息 486
11.13 獲得一個更安全的檔案句柄 488
11.14 保存密碼 489
第 12章 執行緒、同步和並發 496
12.0 簡介 496
12.1 創建每執行緒靜態欄位 497
12.2 對類成員提供執行緒安全的訪問 499
12.3 避免沉默的執行緒終止 505
12.4 在異步委託完成時獲得通知 507
12.5 私有化存儲執行緒特定的數據 509
12.6 使用信號量允許資源的多重訪問 512
12.7 使用互斥量同步多個進程 516
12.8 使用事件協調執行緒 525
12.9 在多執行緒間執行原子操作 527
12.10 最佳化以讀為主的訪問 528
12.11 使資料庫請求更具擴展性 541
12.12 以一定順序運行任務 543
第 13章 工具箱 549
13.0 簡介 549
13.1 處理作業系統關機、電源管理或用戶會話變化 549
13.2 控制系統服務 554
13.3 列出載入一個程式集的進程 558
13.4 使用本地工作站上的訊息佇列 561
13.5 捕獲標準輸出流的輸出 564
13.6 捕獲一個進程的標準輸出 566
13.7 在它自己的AppDomain中運行代碼 568
13.8 確定當前作業系統的作業系統和Service Pack版本 570
關於作者 572
關於封面 572