VB.NET事件在实际应用中具有非常重要的意义。对于开发人员来说,首先要掌握的就是VB.NET事件这样的基础知识。下面我们就来通过这篇文章介绍的内容对此进行一个详细的解读。#t#
VB.NET中的类的构造函数是
- sub New()
- end sub
当然,你也可以加参数。比如Human类的构造函数:
- sub New(Byval Name as string,
byval Gender as String, byval
Stature as integer) - me.Name = Name 'me是VB.NET中的
关键字,表示对象自己,如同java中 - me.Gender = Gender '的this。
java中的super在VB.NET中就是MyBase - me.Stature = Stature
- end sub
这样,我们的老王就是
- dim LaoWang As new Human
("老王", "男", 177)
这样的话,构造Human对象的时候就必须带参数了。我们可以另加一个不带参数的New过程。这里就略过了。
对象不是死的,是活的。对象应该能够主动向外界做出一些表示。这就是事件。比如一个人生了病。这个时候我们就要把他送到医院去。我们先在Human类当中定义一个VB.NET事件:
- public event FallIll
我们假设某人暴饮暴食,吃出病了。在Eat过程中写上:
- public sub Eat()
- raiseevent FallIll
'raiseevent用来引发一个事件- end sub
外界怎样来接收这个事件呢?用AddHandler。我们要在sub Main中先定义一个过程:
- sub GoToHospital
- Console.WriteLine
("病人被送到医院去了。")- end sub
然后将这个过程绑定到一个具体的对象的事件上:
- AddHandler LaoWang.FallIll,
AddressOf GoToHospital
这样,一旦执行LaoWang.Eat,就会引发FallIll事件,这时GoToHospital过程就会执行。VB.NET事件完整的代码如下:
- imports System
- public module MyModule
sub Main '在sub Main中并未直接调用GoToHospital。
- dim LaoWang as Human
- LaoWang = new Human("老王", "男", 177)
- AddHandler LaoWang.FallIll,
AddressOf GoToHospital- Console.writeline("{0}, {1},
身高{2}厘米", _- LaoWang.Name, LaoWang.Gender,
LaoWang.Stature)- LaoWang.Eat() '这里引发事件
- Console.Read
- end sub
- sub GoToHospital
- Console.WriteLine("病人被送到医院去了。")
- end sub
- end module
- public class Human
- public Name as String
- public Gender as String
- public Stature as integer
- sub New(Byval Name as string, byval
Gender as String, byval Stature as integer)- me.Name = Name
- me.Gender = Gender
- me.Stature = Stature
- end sub
- sub New() '不带参数的构造函数
- end sub
- public event FallIll
- public sub Eat()
- raiseevent FallIll
- end sub
- public sub Sleep()
- end sub
- public sub SeeADoctor()
- end sub
- public function Born() as Human
- if Gender = "女" then
- return new Human("","",50)
- else
- return nothing
- end if
- end function
- end class
VB.NET事件还可以带参数。这样在事件引发的时候可以附带一个与事件有关的对象,以便事件的捕获者对其进行处理。
比方我们把FallIll的定义改为:
- public event FallIll
(Byval Name as String)
然后把Eat的内容改为:
- raiseevent FallIll(me.Name)
'将病人的名字交给事件的捕获者。
接着把GoToHospital的定义改为:
- sub GoToHospital(Byval Name
as String)
'该过程的参数数量和种类必须与其捕获
的event的参数相同。- Console.WriteLine(Name &
"被送到医院去了。")- end sub
这时候运行我们就会看到:“老王被送到医院去了。”,VB.NET事件的相关操作就为大家介绍到这里。