日期:2012-12-29  浏览次数:20400 次

 四、对象的广泛应用
    代码重用简化了开发过程,而可视化继承之类的功能又使得代码重用更加方便。然而,代码重用并不局限于此。借助作为VB.NET基础的CLR(Common Language Runtime,公共语言运行时环境),我们可以在VB.NET中继承其他VS.NET语言编写的类。例如我们可以编写一个C#类,然后在VB.NET类中继承该C#类。
  
    VB.NET的面向对象功能已经向各个方向扩展,甚至深入到了语言本身——在VB.NET中,一切都是对象。它意味着和以前的VB版本相比,我们从VB.NET本身获得的支持和功能要多得多,求助于Windows API的时候将更少。例如,在以前的VB版本中,我们用LoadPicture方法装入一个图形,用Line方法(或者其他速度更快的API函数)画线;而在VB.NET中,我们用System.Drawing对象创建和处理图形。下面这段代码用System.Drawing对象在窗体上显示一个图形:
  
  
  picshowpicture.Image = _
  system.Drawing.Image.FromFile( _
  "c:test.bmp")
  
  
  
    注意,VB.NET的“一切都是对象”可能会使代码变得冗长。考虑下面这个语句,它在一个图形对象上面画一条黄绿色的线:
  
  
  objgraphics.DrawLine(system.Drawing. _
  Pens.Chartreuse, 0, 0, 100, 100)
  
  
  
    语句虽然变长,但它获得的好处是:更加灵活,更加容易使用。以前,要实现一些较为复杂的功能往往要深入研究文档,通常还要求助于API。现在,所有相关的功能集都封装到了对象之中。用对象封装功能还有额外的优点——对象以一种极为优美的形式把相关功能组织了起来,所以浏览各个对象、看看它们到底做些什么,事实上也是一件有趣的事情。
  
    Visual Basic.NET的面向对象特色带来了许多切实的好处。大多数情况下,和以前的VB版本相比,VB.NET面向对象的本性以及它对继承的支持使得创建某些类型的应用更加快速和方便。然而,虽然我们可以使用继承以及其他.NET的新功能,比如自由线程,但这些功能并不是一定得使用不可。正如所有其它语言的功能,我们必须使用的功能是那些对给定情形来说最具有意义的功能。
  
    自由线程或许有必要特别说明。VB6允许通过单元线程创建多线程的服务,但VB从来没有支持过创建自由线程的客户程序。VB.NET改变了所有这一切。现在,创建自由线程的应用已经是一件非常平凡和普通的事情。它是如此平凡,以至于完全可以预料有些程序员在为应用加入自由线程时不会理解它的具体细节。启动新的线程只要很少的几行代码——只需把方法的地址传递给线程对象,该方法就会启动一个新的线程。这无疑极为实用和方便,但必须注意的是:这些功能只适合特定的情形,了解哪些情形适用这些功能以及如何恰到好处地运用这些功能属于开发者自己的责任。坦率地说,许多开发者会因为滥用继承和自由线程而给自己带来麻烦,希望这中间并不包括你。