圖書簡介
本書內容全面深入,涵蓋的主題十分豐富,並結合大量典型的代碼示例來講解Visual Basic 2005的核心編程技術。本書共分四部分。首先介紹了Visual Basic 2005的基礎知識,然後詳細介紹了Visual Basic語言的面向對象特性。之後介紹了有關.NET框架的基本類型。最後介紹了一些高級編程主題,例如執行緒處理、序列化、PInvoke和COM Interop等。
本書在多處指出了Visual Basic 2005與Visual Basic 6之間的區別以及Visual Basic 2005和.NET框架2.0版中的新功能,並介紹了導入和重用現有Visual Basic代碼的最佳方式,從Visual Basic低版本升級的用戶可以迅速掌握新工具。
本書是學習Visual Basic語言的高級參考書,適用於所有Visual Basic開發人員。
目 錄
第Ⅰ部分
基礎知識
第1章Microsoft.NET框架簡介
第2章基本語言概念 12
2.1模組、類與命名空間 12
2.1.1模組 13
2.1.2類 15
2.1.3命名空間 26
2.1.4屬性 32
2.2變數 34
2.2.1聲明與賦值 35
2.2.2數據類型 43
2.2.3運算符 51
2.2.4數組 65
第3章控制流和錯誤處理 70
3.1執行流的控制 70
3.1.1條件語句和循環語句 70
3.1.2過程 75
3.1.3命令、函式和常量 82
3.2錯誤處理 86
3.2.1引發異常 86
3.2.2Try...Catch...Finally語句 91
3.2.3Using...EndUsing語句 98
3.2.4自定義異常對象 100
第4章使用VisualBasic2005 102
4.1處理項目和解決方案 102
4.1.1項目和檔案模板 102
4.1.2【解決方案資源管理器】視窗 104
4.1.3MyProject設計器 106
4.1.4多項目解決方案 110
4.1.5配置管理器 112
4.1.6與編譯器相關的屬性 115
4.2編寫代碼 118
4.2.1代碼編輯器 118
4.2.2XML注釋 120
4.2.3查找與替換 122
4.2.4書籤 125
4.2.5【錯誤列表】與【任務列表】視窗 125
4.2.6代碼段 127
4.2.7重構代碼 130
4.3各種新舊特性 132
4.3.1使用【工具】視窗 132
4.3.2導入與導出設定 133
4.3.3項目和項模板 134
4.3.4訪問在線上內容 137
4.3.5自定義特性 137
4.3.6宏與命令 140
第5章調試VisualBasic應用程式 147
5.1調試技術 147
5.1.1斷點與跟蹤點 147
5.1.2單步執行 150
5.1.3數據提示和可視化工具 153
5.1.4處理異常 158
5.2跟蹤與基準測試 160
5.2.1Debug和Trace類 160
5.2.2TraceSource類 166
5.2.3My.Application.Log對象 168
5.2.4StopWatch類型 169
5.3單元測試 169
5.3.1創建測試項目 170
5.3.2運行測試項目 173
5.3.3用於單元測試的屬性 175
5.3.4從資料庫中載入測試 177
5.3.5TestContext類型 179
5.3.6私有訪問器 180
5.3.7代碼覆蓋 180
5.3.8性能工具 182
5.4更多的調試與測試技巧 184
5.4.1Debugger對象 184
5.4.2StackTrace對象 185
5.4.3Debug-in-Zone特性 187
5.4.4VisualStudio宿主進程 189
5.4.5用於調試的宏 189
5.4.6測試不同的配置檔案 191
第Ⅱ部分面向對象編程
第6章類的基礎知識 195
6.1欄位 195
6.2方法 198
6.2.1重載 198
6.2.2重載與強制轉換 200
6.2.3不明確的情況 200
6.3屬性 201
6.3.1隻讀與只寫屬性 202
6.3.2Get與Set語句塊的不同範圍 204
6.3.3帶有參數的屬性 205
6.3.4默認屬性 206
6.4構造函式 206重載的構造函式 208
6.5共享成員 209
6.5.1共享方法 209
6.5.2共享欄位 211
6.5.3共享屬性 213
6.5.4共享構造函式 214
6.5.5共享工廠方法 215
6.6部分類 217
6.7運算符重載 219
6.7.1Operator關鍵字 219
6.7.2可重載運算符 221
6.7.3重載CType運算符 223
6.7.4與其他語言的互操作性 224
6.8用VisualStudio管理類型 226
6.8.1【類視圖】視窗 226
6.8.2類設計器工具 226
6.8.3【對象測試工作檯】視窗 228
第7章委託和事件 229
7.1委託 229
7.1.1委託聲明 230
7.1.2委託調用 230
7.1.3Delegate類型的其他成員 232
7.1.4回調方法和代碼重用 233
7.1.5委託多路廣播 235
7.2事件 236
7.2.1利用Handles關鍵字處理事件 236
7.2.2WithEvents關鍵字 238處理分離類中的事件 239
7.2.3後台的事件與委託 240
7.2.4AddHandler關鍵字 242
7.2.5捕獲數組和集合事件 243
7.2.6公開事件 245
7.2.7事件語法的準則 246
7.2.8自定義事件 248
第8章繼承 251
8.1繼承的基礎知識 251使用派生類 253
8.2重載基類中的成員 254
8.2.1重載變體 255
8.2.2MyBase關鍵字 256
8.2.3派生類中的構造函式 257
8.2.4MyClass關鍵字 257
8.2.5成員遮蔽 260
8.2.6重定義靜態成員 262
8.3密封類和虛擬類 263
8.3.1NotInheritable關鍵字 263
8.3.2MustInherit關鍵字 264
8.3.3MustOverride關鍵字 265
8.4作用域 266
8.4.1嵌套類 266
8.4.2Public,Friend和Private作用域限定符 267
8.4.3Protected作用域限定符 268
8.4.4ProtectedFriend作用域限定符 269
8.4.5將作用域限定符用於構造函式 269
8.4.6重定義事件 271
8.5可視繼承 273
8.5.1基窗體舉例 273
8.5.2繼承的窗體舉例 274
8.5.3向基窗體中添加屬性、方法和事件 275
第9章對象生存期 280
9.1對垃圾收集的需求 280
9.1.1COM和引用計數器 280
9.1.2垃圾收集進程 281
9.1.3Finalize方法 282
9.1.4Dispose方法 284
9.1.5結合Dispose和Finalize方法 286
9.1.6更好的Dispose-Finalize模式 287
9.1.7派生類中的終結器 289
9.1.8終結的簡化方法 290
9.2高級技術 292
9.2.1世代 292
9.2.2垃圾收集與性能 294
9.2.3弱對象引用 297
9.2.4對象復活 299
9.2.5多CPU計算機上的垃圾收集 300
第10章接口 302
10.1定義和實現接口 302
10.1.1Interface...EndInterface語句 302
10.1.2實現接口 303
10.1.3訪問接口 305
10.1.4接口與繼承 306
10.1.5接口的重新實現 307
10.1.6接口與多態 308
10.2使用.NET接口 311
10.2.1IComparable接口 311
10.2.2IComparer接口 312
10.2.3ICloneable接口 314
10.2.4IDisposable接口 317
10.2.5編寫集合類 318
第11章泛型 325
11.1對泛型的需要 325
11.1.1傳統解決方案 326
11.1.2基於泛型的解決方案 327
11.2編寫泛型 328
11.2.1泛型參數 329
11.2.2泛型約束條件 338
11.3高級主題 344
11.3.1可以為空(Nullable)的類型 345
11.3.2對數學運算符的支持 349
11.3.3泛型和事件 351
11.3.4對象池 354
第12章.NET基本類型 359
12.1System.Object類型 359
12.1.1公共方法與受保護方法 359
12.1.2再談值類型和引用類型 361
12.1.3裝箱和取消裝箱 363
12.2字元串類型 364
12.2.1屬性和方法 364
12.2.2Missing方法 370
12.2.3字元串最佳化 371
12.2.4CultureInfo類型 372
12.2.5Encoding類 374
12.2.6格式化數值 375
12.2.7設定日期的格式 377
12.2.8Char類型 380
12.2.9StringBuilder類型 381
12.2.10SecureString類型 382
12.3數字類型 384
12.3.1屬性和方法 384
12.3.2格式化數字 385
12.3.3將字元串分析為數字 386
12.3.4Convert類型 387
12.3.5隨機數生成器 388
12.4DateTime類型 389
12.4.1日期值的加減 390
12.4.2格式化日期 392
12.4.3分析日期 393
12.4.4處理時區 394
12.4.5TimeZone類型 395
12.4.6Guid類型 396
12.5枚舉值 396
12.5.1顯示並分析枚舉值 397
12.5.2其他Enum方法 398
12.5.3位編碼值 399
第13章數組和集合 400
13.1數組類型 400
13.1.1元素的排序 402
13.1.2元素的刪除、複製與移動 403
13.1.3搜尋值 406
13.1.4交錯數組 407
13.1.5泛型方法 409
13.2System.Collections命名空間 413
13.2.1ICollection、IList和IDictionary接口 413
13.2.2ArrayList類型 414
13.2.3Hashtable類型 418
13.2.4SortedList類型 420
13.2.5其他集合 423
13.2.6強類型集合的抽象類型 426
13.3泛型集合 430
13.3.1List泛型 431
13.3.2Dictionary泛型 433
13.3.3LinkedList泛型 435
13.3.4其他泛型集合 438
13.3.5System.Generic.ObjectModel
命名空間 440
第14章正則表達式 443
14.1正則表達式概述 443
14.1.1基礎知識 444
14.1.2正則表達式語言 445
14.1.3正則表達式選項 450
14.2正則表達式類型 453
14.2.1Regex類型 453
14.2.2MatchCollection和Match
類型 458
14.2.3Group類型 458
14.2.4CaptureCollection和
Capture類型 459
14.3正則表達式套用 460
14.3.1常見Regex模式 460
14.3.2查找單詞和帶引號的
字元串 463
14.3.3驗證字元串、數字和
日期的有效性 465
14.3.4查找嵌套標記 467
14.3.5分析數據檔案 468
14.3.6分析和計算表達式 470
14.3.7分析代碼 472
14.3.8使用正則表達式 474
第15章檔案、目錄和流 476
15.1Path類型 477
15.2Directory和File類型 478
15.2.1列舉目錄和檔案 478
15.2.2管理目錄和檔案 479
15.2.3讀取和寫入檔案 481
15.3DirectoryInfo和FileInfo類型 482
15.4DriveInfo類型 484
15.5FileSystemWatcher類型 485
15.5.1初始化FileSystemWatcher
組件 485
15.5.2獲得通知 486
15.5.3疑難解答 488
15.6處理訪問控制列表 489
15.6.1帳戶名稱和安全標識符 489
15.6.2DirectorySecurity和
FileSecurity類型 490
15.6.3修改ACL 494
15.7Stream類型 495
15.7.1流操作 495
15.7.2流式閱讀器和流式編寫器 496
15.7.3讀取和寫入文本檔案 497
15.7.4讀取和寫入二進制檔案 500
15.7.5處理定長和分隔數據檔案 501
15.8其他Stream類型 503
15.8.1記憶體流 503
15.8.2基於字元串的流 504
15.8.3網路流 505
15.8.4緩衝流 508
15.8.5壓縮流 508
第16章My命名空間 511
16.1My命名空間概述 512
16.1.1My.Application對象 512
16.1.2My.Computer對象 518
16.1.3My.User對象 531
16.1.4My.Resources對象 532
16.1.5My.Settings對象 535
16.1.6My.Forms和My.WebServices對象 541
16.2擴展和自定義My命名空間 542
16.2.1添加頂級對象 542
16.2.2擴展My.Application和My.Computer 543
16.2.3擴展My.Resources 544
16.2.4擴展My.Settings 545
16.2.5使用編譯常量 550
第17章程式集與資源 552
17.1組件 552
17.1.1創建.NET類庫 553
17.1.2創建託管組件 554
17.2程式集 556
17.2.1私有和共享程式集 556
17.2.2強名稱 558
17.2.3在GAC中進行安裝 561
17.2.4程式集級別屬性 562
17.2.5InternalsVisibleTo屬性 563
17.3資源和附屬程式集 565
17.3.1資源清單 565
17.3.2本地化的窗體資源 566
17.3.3本地化強類型字元串資源 568
17.3.4自定義資源檔案 569
17.3.5附屬程式集 570
17.3.6附屬程式集的屬性 571
17.4綁定進程 572
17.4.1應用程式配置檔案中的版本策略 573
17.4.2預先載入的程式集及GAC查找 575
17.4.3基本代碼提示 575
17.4.4探測 576
17.4.5程式集綁定日誌查看器實用工具(FUSLOGVW) 578
17.5配置檔案 578
17.5.1設定運行庫版本 579
17.5.2.NET框架配置工具 580
17.6NGen工具 581
17.6.1使用NGen工具 582
17.6.2使用NGen服務 583
17.6.3調試本機映像 584
17.6.4NGen的屬性 585
第18章反射 589
18.1使用程式集及模組 589
18.1.1Assembly類型 590
18.1.2AssemblyName類型 594
18.1.3Module類型 595
18.2使用類型 596
18.2.1檢索Type對象 596
18.2.2探討類型成員 601
18.2.3對於泛型的反射 606
18.2.4屬性反射 610
18.2.5創建自定義對象瀏覽器 614
18.3反射示例 617
18.3.1動態創建對象 618
18.3.2訪問成員 619
18.3.3InvokeMember方法 620
18.3.4創建通用比較器 621
18.3.5事件處理程式的動態註冊 623
18.3.6安排動作序列 628
18.3.7隨時編譯 631
18.3.8性能考慮 633
18.3.9安全問題 634
第19章自定義屬性 636
19.1自定義屬性簡介 637
19.1.1構造自定義屬性類 637
19.1.2反射自定義屬性 639
19.2用於CSV序列化的自定義屬性 640
19.3構建基準測試工具 646
19.4為Windows窗體應用程式編寫外掛程式 649
19.4.1PluginLibrary項目 649
19.4.3SamplePlugin項目 655
19.5n層應用程式的框架 657
19.5.1DataObjectLibrary項目 658
19.5.2DataSets項目 664
19.5.3DemoClient項目 666
19.5.4DataObjects項目 667
第20章執行緒 675
20.1執行緒處理基礎知識 675
20.1.1何時使用執行緒 675
20.1.2創建執行緒 676
20.1.3將數據傳遞給執行緒或從中讀取數據 677
20.1.4使用執行緒 679
20.1.5執行緒屬性 680
20.1.6存儲和共享數據 682
20.1.7執行緒和未處理異常 683
20.1.8調試執行緒 685
20.2執行緒的同步 686
20.2.1SyncLock語句 687
20.2.2同步對象 689
20.2.3易變化的讀寫操作 691
20.2.4Monitor類型 692
20.2.5Mutex類型 693
20.2.6Semaphore類型 696
20.2.7ReaderWriterLock類型 697
20.2.8Interlocked類型 698
20.3使用執行緒池 702
20.3.1ThreadPool類型 702
20.3.2Timer類型 703
20.4異步操作 704
20.4.1異步委託 704
20.4.2異步檔案操作 708
20.4.3為用戶類型添加異步支持 709
20.5Windows窗體應用程式中的執行緒處理 710
20.5.1ISynchronizeInvoke接口 711
20.5.2BackgroundWorker組件 713
第21章序列化 717
21.1基本序列化 717
21.1.1二進制序列化 718
21.1.2SOAP序列化 719
21.1.3創建可序列化類型 720
21.1.4對象圖 721
21.1.5序列化和事件 722
21.1.6深層對象克隆 724
21.1.7版本容錯序列化(VTS) 725
21.2自定義序列化 726
21.2.1IDeserializationCallback接口 727
21.2.2ISerializable接口 728
21.2.3序列化和反序列化事件 733
21.2.4IObjectReference接口 734
21.2.5ISerializationSurrogate接口 736
21.2.6繼承不可序列化類型 739
第22章PInvoke和COMInterop 743
22.1使用PInvoke 744
22.1.1Declare關鍵字 744
22.1.2DllImport屬性 745
22.1.3封送數據 747
22.1.4MarshalAs屬性 748
22.1.5StructLayout屬性 749
22.1.6FieldOffset屬性 751
22.1.7委託和回調過程 753
22.1.8In和Out屬性 754
22.1.9Marshal類 756
22.2從.NET調用COM組件 758
22.2.1運行庫可調用包裝 758
22.2.2用VisualStudio導入COM組件 759
22.2.3使用所導入的Interop程式集 760
22.2.4用TlbImp導入COM組件 761
22.2.5主Interop程式集 762
22.2.6免註冊COM組件 763
22.2.7後期綁定與反射 764
22.2.8COMInterop封送處理 765
22.2.9執行緒處理問題 766
22.3從COM調用.NET對象 767
22.3.1COM可調用包裝 767
22.3.2創建示例.NET組件 768
22.3.3RegAsm與TlbExp工具 769
22.3.4轉換的詳細信息 769
22.3.5使用屬性控制轉換 770
22.3.6處理異常情況 773
22.3.7編寫COM友好的.NET框架組件 774