事件

在VB.NET中,继承是完全支持事件的。如果一个基类定义了一个Public事件,那么这个事件可以通过基类的代码或者任何由基类继承而来的子类所触发。

举个例子吧,我们可以先定义一个基类,代码如下:

Public Class Parent
  Public Event ParentEvent()
  Public Sub DoEvent()
RaiseEvent ParentEvent()
  End Sub
End Class

很显然,类中的代码可以触发ParentEvent事件。我们还可以这样来创建一个子类:

Public Class SubClass
  Inherits Parent
  Public Sub DoSomething()
RaiseEvent ParentEvent()
  End Sub
End Class

这个子类是通过使用Inherits关键字继承而来的,它不仅得到了父类的属性和方法,而且继承了基类的事件。

事件可以定义任何的作用域。如果定义为Private事件,那么它就只可以通过发送对象来获得,但是Public事件就可以被任何对象访问。而Protected事件可以通过定义类或者子类来创建对象进行访问。另外Friend 事件可以被VB.NET工程中的任何对象访问。

不象方法,事件不能使用Overloads关键字来进行重载。一个类可以使用任何特定的名字来定义一个事件。因为任何子类将自动从父类重得到事件,所有Override关键字就显得没什么作用,故不能用于事件中。

共享事件

事件可以定义为Shared。共享方法可以触发共享事件,而不能触发非共享事件,具体例子如下:

Public Class EventSource
  Shared Event SharedEvent()
  Public Shared Sub DoShared()
RaiseEvent SharedEvent()
  End Sub
End Class

一个共享事件也可以由共享方法或者非共享方法来触发,下面是相应的例子:

Public Class EventSource 
  Public Event TheEvent() 
  Shared Event SharedEvent()
  Public Sub DoSomething()
RaiseEvent TheEvent()
RaiseEvent SharedEvent()
  End Sub
  Public Shared Sub DoShared()
RaiseEvent SharedEvent()
End Sub
  End Class

如果你想从一个共享方法中触发一个非共享事件就将导致一个语法错误。