VB.NET事件在實(shí)際應(yīng)用中的作用體現(xiàn)
VB.NET事件在實(shí)際應(yīng)用中具有非常重要的意義。對(duì)于開發(fā)人員來說,首先要掌握的就是VB.NET事件這樣的基礎(chǔ)知識(shí)。下面我們就來通過這篇文章介紹的內(nèi)容對(duì)此進(jìn)行一個(gè)詳細(xì)的解讀。#t#
VB.NET中的類的構(gòu)造函數(shù)是
- sub New()
- end sub
當(dāng)然,你也可以加參數(shù)。比如Human類的構(gòu)造函數(shù):
- sub New(Byval Name as string,
byval Gender as String, byval
Stature as integer) - me.Name = Name 'me是VB.NET中的
關(guān)鍵字,表示對(duì)象自己,如同java中 - me.Gender = Gender '的this。
java中的super在VB.NET中就是MyBase - me.Stature = Stature
- end sub
這樣,我們的老王就是
- dim LaoWang As new Human
("老王", "男", 177)
這樣的話,構(gòu)造Human對(duì)象的時(shí)候就必須帶參數(shù)了。我們可以另加一個(gè)不帶參數(shù)的New過程。這里就略過了。
對(duì)象不是死的,是活的。對(duì)象應(yīng)該能夠主動(dòng)向外界做出一些表示。這就是事件。比如一個(gè)人生了病。這個(gè)時(shí)候我們就要把他送到醫(yī)院去。我們先在Human類當(dāng)中定義一個(gè)VB.NET事件:
- public event FallIll
我們假設(shè)某人暴飲暴食,吃出病了。在Eat過程中寫上:
- public sub Eat()
- raiseevent FallIll
'raiseevent用來引發(fā)一個(gè)事件- end sub
外界怎樣來接收這個(gè)事件呢?用AddHandler。我們要在sub Main中先定義一個(gè)過程:
- sub GoToHospital
- Console.WriteLine
("病人被送到醫(yī)院去了。")- end sub
然后將這個(gè)過程綁定到一個(gè)具體的對(duì)象的事件上:
- AddHandler LaoWang.FallIll,
AddressOf GoToHospital
這樣,一旦執(zhí)行LaoWang.Eat,就會(huì)引發(fā)FallIll事件,這時(shí)GoToHospital過程就會(huì)執(zhí)行。VB.NET事件完整的代碼如下:
- imports System
- public module MyModule
sub Main '在sub Main中并未直接調(diào)用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() '這里引發(fā)事件
- Console.Read
- end sub
- sub GoToHospital
- Console.WriteLine("病人被送到醫(yī)院去了。")
- 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() '不帶參數(shù)的構(gòu)造函數(shù)
- 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事件還可以帶參數(shù)。這樣在事件引發(fā)的時(shí)候可以附帶一個(gè)與事件有關(guān)的對(duì)象,以便事件的捕獲者對(duì)其進(jìn)行處理。
比方我們把FallIll的定義改為:
- public event FallIll
(Byval Name as String)
然后把Eat的內(nèi)容改為:
- raiseevent FallIll(me.Name)
'將病人的名字交給事件的捕獲者。
接著把GoToHospital的定義改為:
- sub GoToHospital(Byval Name
as String)
'該過程的參數(shù)數(shù)量和種類必須與其捕獲
的event的參數(shù)相同。- Console.WriteLine(Name &
"被送到醫(yī)院去了。")- end sub
這時(shí)候運(yùn)行我們就會(huì)看到:“老王被送到醫(yī)院去了。”,VB.NET事件的相關(guān)操作就為大家介紹到這里。