微软公司最新推出的VB.NET是自从VisualBasic程序设计语言问世以来功能最完善的一个版本,该版本中引入了新的程序设计方法和新的工作环境。本书各章节中讨论的程序设计方法和代码案例都是针对各种应用提供的实用案例,其范围不仅包括最常用的文件管理、数据库格式转换、XMLWeb服务设计等,而且还涉及到C#语言和VisualBasic.NET混合编程的方法和技巧。我们相信,在本书的帮助下,读者将可以顺利地进入面向对象的.NET世界。译者序微软公司最近推出的VisualBasic.NET程序设计语言是对10年前开始发行的VB程序设计语言最大的一次功能升级。作为微软程序设计语言升级战略的核心组成部分之一,VisualBasic.NET与微软的CSHARP语言与VisualC++语言一起组成了微软公司的VisualStudio.NET。微软推出VisualStudio.NET的意义在于统一了微软各种编程语言所实现的用户界面。除此之外,VisualBasic.NET的功能升级也使VB程序设计语言在功能与程序设计方法方面首次与经典的C++和Java语言平起平坐。从项目开发的角度来看,VisualBasic.NET为程序员开发最流行的应用程序提供了高效的开发工具。从程序员的角度来看,借助于VisualBasic.NET的新增功能,程序员可以快速创建各类基于Windows系统的应用,特别是可以创建基于Web的各种Web服务应用,除此之外,VisualBasic.NET还首次实现了对应用发布与版本管理的支持。VisualBasic.NET与早期VB程序设计语言的主要区别在于以下五个方面:1.VisualBasic.NET支持微软最新推出的ADO.NET和ActiveXDataObjects(ADO)功能。程序员可以通过ADO把基于XML的数据绑定到数据库、类、集合,以及数组中使用。2.VisualBasic.NET首次全面支持面向对象的程序结构,允许程序员创建组件化的可复用代码资源。VisualBasic.NET不仅支持对象的继承、封装、多态性等对象特征,而且还允许开发人员在程序中构造可运行在各类操作系统平台上的XMLWeb服务。3.VisualBasic.NET新增的调试和跟踪功能允许应用程序直接访问操作系统的注册表、事件日志、性能计数器和文件系统等系统资源。4.VisualBasic.NET在安全方面为程序员提供了强有力的工具。借助于对微软.NET架构的直接访问,程序员可以通过.NET架构提供的多种安全模式对其应用实现各种粒度的安全控制。5.借助于VisualBasic.NET提供的移动设备互联工具,程序员可以针对80种以上的移动设备开发各种无线应用。本书适合于从事VisualBasic程序设计的技术开发人员,以及大专院校有关专业的师生。本书由刘谦、苏建平负责校审和统稿,参与本书翻译工作的其他人员还有王军平、刘丽云、李新、李江月、张君哲、钱云、刘城、田红。刘颍、刘新等参与了本书的校对和录入。由于本书内容较新,篇幅较多,再加上译者的时间和水平有限,在翻译过程中难免有疏漏和错误,敬请读者给予批评指正。简介18个月前,我开始熟悉即将问世的VisualBasic并很快就为它所折服。当时的资料还是很粗略的,但是我还是从中感觉到Microsoft想要将VisualBasic变为全面的面向对象语言的意图。我曾有过面向对象的开发经验。对“好的OOP设计将会自然而然地组织起你的思路(包括你的代码)”深有感触。我希望能尽快在VisualBasic中用到这种设计方法。当然,并不是不费吹灰之力就可以掌握这种方法的。新的VisualBasic并不向上与VB6兼容。由于我的所有的开发都是使用VB6的,将其升级到新的语言上将不会像由VisualBasic4升级到VB5或由VB5升级到VB6那么简单。我看VisualBasic.NET即使是对有经验的VisualBasic开发者,进入VisualBasic.NET也要学习大量的新的功能及函数。虽然VisualStudio.NET提供了VB6到VB.NET的程序转换器,但人们很快就发现(甚至在尝试转换第一个程序之前)这种严格的转换方法对大部分程序并不适用。原因是VB6与VB.NET之间的差别绝不仅仅是一系列语法差别。.NET开发具有崭新的语言特性及崭新的程序之间相互通信的方法。因此.NET应用程序将更像是设计上完全不同的新应用程序。在研究一些VB.NET的例子时,第一个引人注意的主要的区别就是VB.NET的纯面向对象的语言特性。在VB.NET中,任何东西都是类。应用程序、表单、所有的按钮、标签和树型视图(Treeview)对象都是纯对象的实例。这赋予了该语言前所未有的一致性。它也?峁┝舜唇ㄍㄓ糜没Ы缑胬嗟募坛欣嗟姆椒ǎ佣刮颐强梢远越缑娴墓δ芙性銮考霸黾邮荽娲⑹粜浴?VB.NET的面向对象的特性是与.NET框架结构(.NETFramework)紧密相联的。.NET框架结构是一个面向对象的API。它表现为上百个类。这些类封装了在Windows操作系统或MessageQueue及SQLServer等Windows资源中的所能见到的所有功能。这些类按其逻辑分组,每组为一有组织的,具有层次的单元,我们称之为命名空间(namespaces)。这些命名空间可以在需要时加入代码中。实际上,不了解.NET框架结构就无法深入学习VB.NET,因为VB.NET是内置于.NET框架结构之中的。.NET框架结构的主要特性之一是其资源回收的概念,而这个概念将会很大地改变程序员的编程思路。.NET框架结构自动对对象所占内存进行管理,这就避免了编程中由于忘记释放资源而引起内存紧张的现象的发生。同时它还使程序员能够将精力放在过程的逻辑上,而不是在查找是否在每一个对象实例化后有相应的释放该对象的代码存在。程序员们还将受益于结构化的异常处理程序,这是对OnErrorGoto的巨大改进。一个异常处理程序中的代码块由一行或多行代码组成,可对不同类型的错误进行处理。异常错误类可能是非常一般性的错误,也可能是非常具体的错误,所以对某一类的错误可以采用一种处理方法,如写入事件日志,而对另一类的错误则需采用不同的处理,如通过消息框向用户提出错误警告。异常处理程序也可进行嵌套,即可在内层代码块进行错误处理而不影响外层的代码块,这在VB6中则需要非常复杂的代码才能实现。.NET框架结构的创新之一是XMLWeb服务的概念。XMLWeb服务是一组可通过标准HTTP协议进行调用的对象。对象被串行化(serialized)为XML格式以便于传输,然后到达用户程序并成为标准的.NET框架结构对象。这种编程方法使得开发者可以通过Internet让其他人使用自己的程序,或者是免费的,或者是通过某种付费手段。我希望XMLWeb服务将成为下一代的ActiveX控件,从而给予第三方开发者们一个通过创建可通过Internet存取的可重用对象来相互帮助的舞台。这个简短的介绍只是说明为什么VB.NET值得注目。微软放慢了脚步并重新考虑一个完美的开发工具的概念。.NET平台是其尝试的结果。在使用该语言一年之后,我仍不断学到新的.NET框架类和新的开发技术。作者简介早在1982年,我就是母校高中所有班级中开始接触计算机的两个先行者之一,当时我们学校使用的是TRS-80个人电脑(我们称该电脑为“垃圾80”)。这时的电脑课程主要是学习计算机的基本概念和个人电脑的使用方法。这是一段值得回忆的美好时光,当时给我们上课的老师在计算机知识方面与我们处于相同的水平,不管是老师还是学生,我们都处于启蒙阶段。我的软件开发生涯是从高中时代开始的。在俄亥俄州立大学获得信息科学学士学位后,我在保险公司获得了第一份工作。那时保险公司的业务非常有趣,公司的所有数据都存储在老式的大型机系统中(我至今还无法记住该系统的名称),当时公司的一个程序员编制一个把主机数据转换为个人电脑可以接受的文本文件的客户查询工具。公司给我的职务是业务分析员,其实我的任务就是为公司其他职员做一些辅助工作,如写邮件标签、总结项目数据进行备份等一般性工作。当时我使用的程序设计工具是Fox软件公司的数据库语言“FoxPro2”(稍后,微软公司整体吞并了Fox公司)。我的“跳槽”生涯是从离开保险公司以后开始的(有些跳槽是由于所在公司倒闭或被其他公司合并而迫不得已的)。我先后在财务、商业零售、运输等软件开发公司就职,曾经开发过反病毒程序。上述工作经历使我明白了一个道理,这就是尽管在每个公司都是在编制程序代码,但我并没有在工作中得到希望的乐趣。感谢上帝,我最终在克利夫兰印第安前锋公司发现了我感兴趣的工作。五年以来,我一直在该公司开发专用软件(in-housesystem)。除了每天在公司用8个小时开发软件以外,我还在业余时间自己编制一些程序。我不知不觉地开始热衷于个人电脑的游戏软件开发,曾经在业余时间为大家所熟悉的游戏“Doom”和“Quake”设计了游戏级别编辑程序。除此之外,我还为Sybex出版社写了两本有关游戏级别构造的专著。值得一提的是,我为游戏“Quake”编制的级别编辑器还在游戏软件零售市场上取得了成功。但最令我感到骄傲的还是Sybex出版社给我提供的这次机会,使我有幸为熟悉VisualBasic语言的程序员提供帮助,引导他们顺利地从传统的VB程序设计方法转入功能更为强大的VB.NET程序设计的坦途。如果说还有什么事情可以把我的注意力从电脑转移到其他方面的话,这就是我的爱妻和我们的两个可爱的宝贝以及我最爱玩的棒球游戏。关于本书及选配光盘本书是针对有经验的VisualBasic程序员而写的。正是由于这个原因,我没有在“Helloworld”程序或其他初级程序上花费时间及篇幅。但我也没有走另一条路,即写一个完整的包含所有功能的应用程序,然后解释每一个代码行。这种“为书而做”的应用程序很少对大多数读者有帮助。我选择的是:写一些小