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