內容簡介
這是一本集編程感悟、技巧、陷阱、謬誤、算法和方案為一體的編程書籍,旨在引導讀者如何學習編程,幫助讀者豐富編程經驗。全書分為6篇,總計17章,全面介紹了學習和套用C#進行程式開發的各種陷阱與謬誤、技術細節與經驗技巧、常用的算法及解決方案。其涉及的技術主要包括面向對象的三要素(封裝、繼承、多態)、特性(Attribute)、泛型、委託和事件、異常處理、序列化和反序列化、動態操作程式集、ADO NET對象運算元據庫、Lambda表達式、LINQ操作對象、LINQ運算元據集等C#核心技術,另外本書還介紹了執行緒異步調用、多執行緒同步、網路通信、GDI+繪製圖形、自定義Windows Form控制項等高級套用技術。
本書附帶有配套DVD光碟,光碟中提供了書中全部實例和項目的原始碼,這些原始碼都是經過作者精心調試通過的,保證能夠在Windows XP、Windows 2003及Windows 7作業系統下編譯和運行。
讀者對象:本書非常適合大中專院校在校生和畢業生、求職者、編程愛好者學習,同時也可以作為想要學習編程的初級人員的指導用書。
圖書目錄
目 錄
第1篇 編程經驗與感悟——站在前人臂膀上前行 1
第1章 步入編程殿堂 2
感悟01 謹慎選擇——如何選擇程式語言 3
感悟02 重視基礎——學習編程要打好基本功 4
感悟03 規範代碼——養成良好的編碼規範 4
感悟04 內外兼修——要重視實踐練習 5
感悟05 持之以恆——堅持比激情更重要 5
感悟06 培養興趣——感悟編程的樂趣與成就感 6
第2章 提高編程技能 7
感悟07 自我總結——善於總結編程經驗 8
感悟08 活學活用——思維方式要靈活 8
感悟09 相互交流——多向他人學習 9
感悟10 知識的海洋——善於利用豐富網路資源 10
感悟11 堅持學習——學習與培訓的必要性 10
感悟12 品味編程——逐步培養個人的編程思想 11
第3章 暢談編程 12
感悟13 重視細節——編程細節經驗談 13
感悟14 資料庫結構——資料庫設計經驗談 13
感悟15 實踐出真知——項目開發經驗談 15
感悟16 價值體現——信息技術改變我們的生活 17
感悟17 展望未來——展望中國IT行業的未來 18
第2篇 陷阱與謬誤——汲取前人的教訓 19
第4章 C#開發人員不可忽視的30個技術陷阱 20
陷阱01 漏洞百出——使用for刪除集合中元素時的陷阱 21
陷阱02 無法逃生——使用循環語句不慎產生死循環 23
陷阱03 並非尋常——在程式中暴露常量時產生的陷阱 24
陷阱04 變幻莫測——拆箱存在的隱患 26
陷阱05 危機四伏——相等運算符重載造成的陷阱 28
陷阱06 事與願違——結構初始化產生的陷阱 30
陷阱07 防不勝防——params關鍵字載入空值時的陷阱 31
陷阱08 無風起浪——初始化靜態成員時產生的陷阱 33
陷阱09 誤入歧途——傳遞派生類產生的陷阱 35
陷阱10 隱患重重——數據類型轉換時可能存在的隱患 37
陷阱11 三思而行——構造方法中調用虛方法的陷阱 39
陷阱12 表里不一——保存空值到數據表日期欄位存在的陷阱 41
陷阱13 三思而行——讀取資料庫中空欄位值時的陷阱 44
陷阱14 糟糕透頂——使用null對資料庫的空值進行比較時的陷阱 45
陷阱15 防不勝防——遍歷ArrayList數組時可能存在陷阱 47
陷阱16 不知其二——以DataReader對象作為方法返回值的陷阱 49
陷阱17 迷霧重重——使用窗體的Controls屬性遍歷窗體控制項時產生的陷阱 51
陷阱18 不容侵犯——獲取ComboBox的SelectedValue屬性時存在的陷阱 53
陷阱19 意想不到——SQL Server資料庫中DateTime類型的溢出陷阱 56
陷阱20 三思而行——用DataReader讀取數據時產生的陷阱 58
陷阱21 不知其二——獲取DataTable類型數據源產生的陷阱 60
陷阱22 空穴來風——當ExecuteScalar返回值為空時的陷阱 61
陷阱23 拒之門外——在DataGridView中插入行時的陷阱 64
陷阱24 波瀾起伏——清除DataGridView中數據時產生的陷阱 65
陷阱25 埋下禍患——在DataGridView中綁定自增列產生的陷阱 68
陷阱26 三思而行——使用值類型進行執行緒同步 71
陷阱27 危機四伏——引用類型對象自身進行同步的陷阱 73
陷阱28 三思而行——使用LINQ的First方法 74
陷阱29 自相矛盾——因讀/寫檔案時編碼格式不一致而產生的陷阱 76
陷阱30 自相矛盾——讀/寫二進制檔案的陷阱 77
第5章 C#開發人員意識中的20個常見謬誤 80
謬誤01 誤入歧途——所有的異常都要使用try catch語句捕獲 81
謬誤02 不知其二——事件和委託的差別很大 82
謬誤03 誤入歧途——C#中的string和String是不同類型 82
謬誤04 誤入歧途——.NET中的應用程式域和作業系統中的進程完全相同 83
謬誤05 誤入歧途——C#中不能定義一個全局可見的變數 83
謬誤06 不知其二——C#和SQL Server中“空”是一回事 84
謬誤07 不知其二——C#的結構與C++的結構完全一樣 84
謬誤08 不知其二——方法中只有引用類型的參數才能實現引用傳遞 85
謬誤09 不知其二——字元串是值類型 86
謬誤10 不知其二——C#中的數組類型和C++的數組沒有區別 87
謬誤11 不知其二——泛型在不被指定的情況下是不確定的類型 87
謬誤12 不知其二——Object類型比較方法上的一些誤解 89
謬誤13 不知其二——.NET中的執行緒等價於Win32執行緒 90
謬誤14 一字之差——重載方法就是重寫方法 91
謬誤15 必由之路——在try語句中使用return、finally語句得不到執行 92
謬誤16 相差懸殊——結構是一種輕型或小型的類 93
謬誤17 惡意猜測——多個執行緒同時調用靜態方法,其運行結果可能不準確 94
謬誤18 相差甚遠——String與StringBuilder基本上相同 95
謬誤19 混淆是非——結構不可以實現接口 96
謬誤20 不知其二——Environment.CurrentDirectory始終為應用程式檔案的目錄 97
第3篇 技術細節——修煉編程內功心法 99
第6章 技術細節—C#語言基礎 100
細節01 打包變數——裝箱和拆箱 101
細節02 虛虛實實——理解值類型和引用類型 102
細節03 相互適應——隱式轉換和顯式轉換 106
細節04 齊步向前——理解移位運算符 108
細節05 等級制度——理解運算的次序 110
細節06 暢通無阻——理解參數的類型 111
細節07 同名同姓——重載方法 115
細節08 取而代之——虛方法與重寫方法 116
細節09 紙上談兵——接口的概念及聲明 119
細節10 血戰沙場——接口的兩種實現方式 120
細節11 不溫不火——抽象類與抽象方法 124
細節12 格格不入——什麼是封裝 126
細節13 子承父業——什麼是繼承 128
細節14 本是同根——什麼是多態性 130
細節15 各司其職——作用域的概念 133
細節16 武林秘籍——使用索引器 134
細節17 父子情深——base和this關鍵字 135
細節18 靜觀其變——理解靜態修飾符 137
細節19 追本溯源——C#語言中的Object類 139
細節20 空穴來風——可空類型 140
細節21 分身之術——分部類 141
細節22 無名英雄——匿名方法 143
細節23 自言自語—— .NET框架提供的屬性(Attribute) 145
細節24 自我介紹——自定義屬性類(Attribute) 147
細節25 武林秘籍——套用泛型 148
細節26 武林秘籍——包含/委託 151
細節27 定製循環——實現疊代器 153
細節28 對象克隆——C#中的深複製和淺複製 155
細節29 冒名頂替——重載一元、二元運算符 156
細節30 論資排輩——對象也能排序 158
細節31 異常處理——根據異常類型編寫專有catch語句 160
細節32 異常處理——自定義異常輸出信息 162
細節33 全權代理——委託的定義及套用 163
細節34 秘密事件——自定義事件 164
細節35 武林秘籍——對象的序列化與反序列化 166
細節36 武林秘籍——使用XML方式進行序列化和反序列化 168
細節37 自我主張——使用特性自定義XML序列化 170
細節38 自由進出——在C#中動態載入和卸載程式集 171
細節39 萬能類型——使用var創建隱型局部變數 172
細節40 委託殺手——Lambda表達式 174
第7章 技術細節—Windows開發技術 175
細節01 一統天下——創建MDI窗體框架 176
細節02 迥然不同——模態對話框和非模態對話框 179
細節03 遺傳基因——Windws Form窗體繼承 181
細節04 隨心所欲——DateTimePicker控制項自定義顯示格式 183
細節05 異步助手——BackgroundWorker組件執行異步操作 185
細節06 毫無私情——使用ErrorProvider控制項驗證文本框的輸入 187
細節07 最佳助手——使用HelpProvider控制項調用幫助檔案 189
細節08 強強聯合——製作複合控制項 190
細節09 青出於藍——製作擴展控制項 192
細節10 唯我獨尊——製作自定義控制項 193
第8章 技術細節—檔案、數據流及圖形 196
細節01 靜觀其變——通過File類操作檔案 197
細節02 異曲同工——通過Fileinfo類操作檔案 200
細節03 靜觀其變——通過Directory類操作資料夾 203
細節04 異曲同工——通過Directoryinfo類操作資料夾 205
細節05 天下無敵——使用FileStream流讀/寫數據 210
細節06 略勝一籌——使用BufferedStream流讀/寫數據 212
細節07 專心致志——使用StreamReader和StreamWriter讀/寫數據 214
細節08 異曲同工——通過重寫窗體的OnPaint方法繪圖 217
細節09 完美無缺——使用雙緩衝技術繪圖 218
細節10 精打細算——繪製剪下區域 220
第9章 技術細節—執行緒和網路通信 222
細節01 異曲同工——使用異步委託執行執行緒 223
細節02 爭先恐後——多執行緒產生競態條件的原理 225
細節03 武林秘籍——使用lock關鍵字實現執行緒同步 227
細節04 武林秘籍——使用Monitor類和Mutex類實現執行緒同步 229
細節05 互不讓步——多執行緒產生死鎖的原理 232
細節06 包羅萬象——套用CLR的執行緒池 234
細節07 網路基石——通過Dns類、IPAddress類、IPEndPoint類獲取網路信息 235
細節08 精兵強將——使用Socket類、TcpClient類、TcpListener類實現網路通信 239
第10章 技術細節—資料庫、XML及LINQ 245
細節01 橋樑專家——高效地使用資料庫連線的兩種方式 246
細節02 永不分離——數據源的連線式訪問模式 248
細節03 一招制敵——ADO NET影響一行的數據操作 250
細節04 一箭雙鵰——ADO NET影響多行的數據操作 254
細節05 武林秘籍——用XmlReader讀取XML 257
細節06 武林秘籍——用XmlWriter寫入XML 258
細節07 大浪淘沙——對象的篩選操作 260
細節08 小孔成像——對象的投影操作 261
細節09 論資排輩——對象的排序操作 262
細節10 精打細算——對象的聚合操作 265
細節11 重新組合——對象的集合操作 269
細節12 指點江山——對象的元素操作 272
細節13 首尾相連——對象的連線操作 273
細節14 單槍匹馬——查詢DataSet中的單個表 275
細節15 多多益善——查詢DataSet中的多個表 277
細節16 小孔成像——對DataSet進行投影操作 278
細節17 大浪淘沙——對DataSet進行篩選操作 279
細節18 論資排輩——對DataSet進行排序操作 280
細節19 精打細算——對DataSet進行聚合操作 282
細節20 指點江山——對DataSet進行元素操作 282
細節21 首尾相連——對DataSet進行連線操作 283
細節22 涇渭分明——對DataSet進行數據分區操作 285
第4篇 編程技巧——程式設計師的神兵利器 287
第11章 開發技巧—C#語言基礎 288
技巧01 武林秘籍——巧用異或運算符實現加密功能 289
技巧02 巧妙絕倫——巧用位移運算符獲得漢字編碼 289
技巧03 來者不拒——使用Params關鍵字指定多個參數 290
技巧04 應對自如——如果可能,儘量使用接口來編程 291
技巧05 首當其衝——使用屬性代替公共成員變數 291
技巧06 武林秘籍——對需要排序的對象實現IComparable或IComparer接口 293
技巧07 高效執行——善於使用構造函式鏈 294
技巧08 步調一致——使用靜態構造方法來初始化靜態成員變數 295
技巧09 武林秘籍——總是為自定義類重寫 ToString 方法 296
技巧10 以逸待勞——使用using語句實例化類 297
技巧11 首當其衝——在遍歷集合時優先使用foreach語句 297
技巧12 外圍攻擊——為密封類添加新方法 298
技巧13 武林秘籍——轉換數組類型 299
技巧14 顛倒乾坤——反轉數組中元素的順序 300
技巧15 查找有方——檢索指定條件數組中的元素 301
技巧16 變化莫測——動態改變數組長度 302
技巧17 核心機密——獲取當前程式集的版本號 303
技巧18 武林秘籍——如何讓執行緒跨越應用程式域執行 304
技巧19 異曲同工——使用反射技術實例化對象 305
技巧20 武林秘籍——C#產生隨機數 306
技巧21 LINQ操作——使用LINQ轉換序列或集合 306
技巧22 LINQ操作——使用LINQ初始化數組 308
技巧23 LINQ操作——使用LINQ在一個循環中遍歷多個數組 308
技巧24 LINQ操作——使用LINQ生成隨機序列 309
技巧25 LINQ操作——使用LINQ生成字元串 310
第12章 開發技巧—Windows開發技術 311
技巧01 雍容華貴——設計帶進度條的狀態欄 312
技巧02 異曲同工——設定系統的日期和時間 312
技巧03 前沿陣地——使某個窗體總顯示在最前面 313
技巧04 安全警告——在窗體關閉前顯示對話框 314
技巧05 惟妙惟肖——在托盤中顯示應用程式圖示 315
技巧06 深入淺出——製作半透明的漸顯窗體 316
技巧07 回顧歷史——帶歷史信息的選單 316
技巧08 精準定位——控制TextBox控制項的插入點 317
技巧09 查找有方——在ListBox控制項中查找某項 318
技巧10 絢麗多彩——在ListView控制項中載入圖片 319
技巧11 異曲同工——區分TreeView控制項選中各節點的方式 320
技巧12 全盤搜尋——使用TREEVIEW遍歷磁碟目錄 322
技巧13 綁定數據——List綁定ComboBox控制項 323
技巧14 一目了然——使用ProgressBar顯示進度 324
技巧15 溫馨提示——使用ToolTip控制項提示信息 325
技巧16 控制項操作——選中或取消CheckListBox控制項的全部項 325
技巧17 校驗真偽——設定MaskedTextBox控制項輸入驗證 326
技巧18 統一調度——Mdi窗體打開子窗體的通用方法 327
技巧19 異地傳輸——怎樣把數據從一個窗體傳遞到另一個窗體 328
技巧20 受制於人——使用C#編寫程式控制輸入法 329
技巧21 精準定位——獲得游標在多行TextBox中的行與列 330
技巧22 你被監控——截取系統訊息 331
技巧23 模擬操作——模擬鍵盤操作 332
技巧24 模擬操作——模擬滑鼠操作 333
技巧25 核心機密——獲取CPU的編號和網卡地址 334
技巧26 受制於人——在TextBox中只允許輸入表示數值的字元 335
技巧27 統一管理——設定窗體中所有的控制項為啟用或禁用狀態 336
技巧28 自動控制——C#打開/關閉CDROM 337
技巧29 強強聯合——C#操作Word檔案 338
技巧30 強強聯合——C#操作Excel檔案 339
技巧31 獨一無二——應用程式只運行一個實例 340
技巧32 深藏不漏——不顯示命令行視窗後台運行控制台程式 340
技巧33 伸縮自如——創建在運行狀態下可拖曳和可拉伸的文本框 341
技巧34 獲取機密——Windows操作註冊表 342
技巧35 獨一無二——實現MDI框架窗體不重複打開同一個子窗體 343
技巧36 交流溝通——實現兩個ListBox控制項間交換數據 344
技巧37 武林秘籍——實現在TextBox中按回車鍵相當於按鍵 345
技巧38 武林秘籍——使用RichTextBox控制項保存檔案 346
技巧39 強強聯合——C#讀取Excel表格中的數據 347
技巧40 一手遮天——禁止系統X/V>組合鍵的功能 347
技巧41 絢麗多彩——在ComboBox的下拉列表中顯示圖片 348
技巧42 浮想聯翩——實現ComboBox帶有聯想查詢功能 349
技巧43 身懷絕技——套用ClipBoard類實現系統組合鍵的
功能 350
技巧44 滑鼠操作——禁止滑鼠左鍵 351
技巧45 時隱時現——隱藏和顯示滑鼠 352
第13章 開發技巧—執行緒、進程及網路技術 353
技巧01 武林秘籍——多執行緒綁定帶有參數的方法 354
技巧02 武林秘籍——獲取所有啟動的進程 354
技巧03 巧妙獲取——獲取當前進程的hash值 355
技巧04 順藤摸瓜——通過IP獲得主機信息 356
技巧05 武林秘籍——使用C#編寫程式自動ping對方的IP位址 357
技巧06 秘密搜查——掃描計算機連線埠號 358
技巧07 有求必應——建立TCP伺服器 359
技巧08 發號指令——建立TCP客戶端 360
技巧09 自我展示——自定義Internet瀏覽器外觀 361
技巧10 千挑萬選——查找網頁中的所有超連結 362
第14章 開發技巧—資料庫應用程式開發 364
技巧01 綁定數據——ComboBox控制項綁定數據源 365
技巧02 綁定數據——CheckedListBox控制項綁定數據源 365
技巧03 綁定數據——ListBox控制項綁定數據源 366
技巧04 綁定數據——TreeView控制項綁定數據源 367
技巧05 綁定數據——DataGridViewComboBoxColumn綁定數據源 368
技巧06 一專多能——編輯DataGridView控制項後提交數據 369
技巧07 自我創新——在DataGridView控制項中添加自定義列 370
技巧08 一掃而空——清空DataGridView控制項中的數據 371
技巧09 分久必合——把數據表的兩個列合成一個列放入DataGridView中 371
技巧10 同甘共苦——使用事務同時提交多個數據表 372
技巧11 同甘共苦——使用隱式事務實現多表提交數據 373
技巧12 同甘共苦——實現數據表之間批量複製數據 374
技巧13 武林秘籍——使用序列化技術將圖像寫入資料庫 375
技巧14 武林秘籍——使用反序列化技術從資料庫中讀取圖像 376
技巧15 日新月異——獲取資料庫中的日期 376
技巧16 獨一無二——獲得數據表的主鍵 377
技巧17 一同前往——使用SqlDataAdapter同時查詢多條SQL語句 378
技巧18 隨心所欲——把任意檔案保存到資料庫中 379
技巧19 異曲同工——將圖像保存到XML檔案中 379
技巧20 顛倒乾坤——在數據表中實現行數據轉列 380
第15章 開發技巧—其他實用技巧 382
技巧01 有規有矩——將數字轉換為日期格式 383
技巧02 有規有矩——使用Tostring方法得到多種日期格式 383
技巧03 有規有矩——使用ParseExact方法將字元串轉換為日期格式 384
技巧04 異曲同工——將小寫金額轉換為大寫金額 385
技巧05 有規有矩——使用NumberFormatinfo類將數字格式化為貨幣格式 386
技巧06 顛倒是非——將行字元串轉換為列字元串 387
技巧07 合情合理——把按照逗號分隔的字元串存儲在ArrayList數組中 388
技巧08 本末倒置——將字元串顛倒順序輸出 389
技巧09 辨別真偽——使用正則表達式判斷字元串是否為日期格式 390
技巧10 巧取豪奪——通過判斷ASCII編碼來截取字元串中的數字 390
技巧11 查驗真偽——使用正則表達式驗證個人常用信息 391
技巧12 查驗真偽——使用正則表達式驗證數字或字母 392
技巧13 查驗真偽——使用正則表達式驗證漢字輸入 393
技巧14 查驗真偽——使用正則表達式驗證大寫或小寫字母 394
技巧15 查驗真偽——使用正則表達式驗證整數或小數 394
技巧16 查找字元——使用正則表達式檢查字元串中連續重複出現的單詞 395
技巧17 核心機密——修改檔案屬性 396
技巧18 更名改姓——修改資料夾名稱 397
技巧19 更名改姓——修改指定檔案的名稱 398
技巧20 面面俱到——遍歷整個資料夾 399
技巧21 查找檔案——搜尋指定目錄下的指定檔案 400
技巧22 操作檔案——刪除資料夾中的所有檔案 401
技巧23 巧妙分離——從檔案的完整名稱中分離出路徑、檔案名稱及擴展名 402
技巧24 實時監控——監視新創建的檔案 402
技巧25 讀/寫檔案——C#應用程式讀/寫INI檔案 403
技巧26 操作記憶體流——讀/寫記憶體流數據 405
技巧27 操作緩衝流——使用緩衝流複製檔案 406
技巧28 轉危為安——創建臨時檔案 407
技巧29 如出一轍——比較兩個檔案的內容是否相同 408
技巧30 圖像處理——從左向右以拉伸方式顯示圖像 409
技巧31 圖像處理——從上向下以拉伸方式顯示圖像 410
技巧32 繪聲繪色——使用GDI+技術繪製餅型圖 412
技巧33 伸縮自如——按比例縮放圖像 413
技巧34 圖片剪下——實現圖片剪下 414
技巧35 身懷絕技——在圖片中寫入文字 416
技巧36 美輪美奐——C#實現動畫效果 417
技巧37 格式轉換——轉換圖像檔案的保存格式 418
技巧38 滑鼠操作——利用滑鼠繪圖 419
技巧39 螢幕抓圖——C#實現抓屏功能 420
技巧40 絢麗登場——動畫顯示窗體 420
第5篇 算法和效率——程式設計師的得力助手 422
第16章 常用的20個算法及套用 423
算法01 經典算法——冒泡排序算法 424
算法02 經典算法——選擇排序算法 425
算法03 經典算法——插入排序算法 426
算法04 經典算法——希爾排序算法 427
算法05 經典算法——單向鍊表 428
算法06 經典算法——雙向鍊表 434
算法07 經典算法——堆疊 439
算法08 經典算法——佇列 442
算法09 經典算法——樹的實現 443
算法10 實用算法——判斷素數的算法 448
算法11 實用算法——加密和解密算法 449
算法12 實用算法——按要求生成指定位數編號 451
算法13 實用算法——身份證號從15位升到18位算法 452
算法14 趣味算法——“百錢百雞”的算法 454
算法15 趣味算法——韓信點兵的算法 454
算法16 實用算法——實現裴波納契數列求和 455
算法17 實用算法——求水仙花數的算法 457
算法18 實用算法——如何將B轉換成GB、MB和KB 458
算法19 實用算法——0~N位數的任意組合 459
算法20 實用算法——在數組中快速查找近似值 462
第6篇 解決方案——前人的經驗精髓 464
第17章 C#開發人員必知必會的20個解決方案 465
方案01 天下無敵——通用數據訪問層解決方案 466
方案02 武林秘籍——C#自動配置ODBC數據源 473
方案03 幕後英雄——C#套用存儲過程處理數據 478
Sub_01 套用存儲過程添加數據方案 478
Sub_02 套用存儲過程修改數據方案 480
Sub_03 套用存儲過程刪除數據方案 481
Sub_04 套用存儲過程查詢數據方案 482
方案04 武林秘籍——查詢主鍵所擁有的外鍵約束信息 483
方案05 異曲同工——使用DataGridView控制項直接提交數據 487
方案06 武林秘籍——動態設定水晶報表數據源 492
方案07 來去自如——C#備份和還原SQL Server資料庫 496
Sub_01 C#備份SQL Server資料庫 497
Sub_02 C#還原SQL Server資料庫 499
方案08 責權明晰——軟體模組操作授權方案 501
方案09 解鎖秘籍——軟體註冊解決方案 507
Sub_01 利用註冊表設計軟體註冊程式 507
Sub_02 利用網卡序列號設計軟體註冊程式 509
Sub_03 根據CPU序列號、磁碟序列號設計軟體註冊程式 512
方案10 秘密防守——數據加密方案 515
方案11 自由自在——創建在運行狀態下可操作的控制項 517
方案12 武林秘籍——複製檔案方案 521
Sub_01 使用FileStream複製大檔案 521
Sub_02 複製檔案時顯示複製進度 524
Sub_03 批量複製檔案 526
方案13 秘密防守——文本檔案的加密與解密方案 528
Sub_01 使用對稱加密算法實現對檔案的加密與解密 528
Sub_02 利用圖片對文本檔案進行加密與解密 534
方案14 伸縮自如——檔案壓縮與解壓縮方案 537
Sub_01 使用GZipStream類實現對檔案的壓縮與解壓縮 537
Sub_02 使用WinRAR實現對檔案的壓縮與解壓縮 540
方案15 另有玄機——C#多執行緒訪問WinForm方案 543
方案16 遠程遙控——計算機遠程控制解決方案 546
Sub_01 遠程控制計算機 546
Sub_02 遠程控制服務 548
方案17 異曲同工——在C#項目中引用完全相同的DLL檔案 551
方案18 自我變換——把漢字轉換成拼音 555
方案19 武林秘籍——生成並列印條形碼 557
方案20 驗證真偽——中文驗證碼方案 561