Visual Basic 2005技术内幕

2006年清华大学出版社出版的图书
《Visual Basic 2005技术内幕》是2006年清华大学出版社出版的图书，作者是贾洪峰。
图书简介
本书内容全面深入，涵盖的主题十分丰富，并结合大量典型的代码示例来讲解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