正確理解VB.NET函數(shù)調(diào)用
VB.NET編程語言中的函數(shù)應用是一個非常復雜的步驟,很多內(nèi)容都需要我們在實踐中慢慢積累經(jīng)驗,去對此進行詳細解讀。在這里我們先來談談有關VB.NET函數(shù)調(diào)用的一些方法,希望對大家有所幫助。#t#
在VB6中如果你想調(diào)用一個對話框,首先你知道要使用vb內(nèi)置的MsgBox函數(shù),你甚至于使用API,大部分人樂于使用API。如下:
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
所以每次進行VB.NET函數(shù)調(diào)用的時候先有聲明一個變量,dim xxx as long再如下:xxx=messagebox(這個括號里就填相應的參數(shù),如第一個參數(shù)是ByVal hwnd As Long,這個是要你填一個long類型的句柄,可以先打一個0,打一個逗號,寫入第二個string的字符數(shù)據(jù),這個就是對話框的內(nèi)容了……………….)。
實際上在大部分時候并沒有使用返回的值,只是作為一個調(diào)用的方法。 Lib"user32"表示使用user32的dll文件,alias"messageboxA"就是API函數(shù)了,messagebox只是一個代號,在linux中不是也有一個alias么?,就是一個別名了。
為什么VB.NET令大部分老的程序員感到憤怒呢?這也并不是完全的因循守舊,一個初入門的編程人員是無法想象一門完整的程序語言所需要經(jīng)年累月積累的知識。然而現(xiàn)在這一切都改變了,就象上面提到的一些最基本的知識也不再基本。然而你為什么樂于使用API呢,你會回答,他更靈活更有挑戰(zhàn)性,但是VB.NET 不是更加的富有這些么。
或許微軟會象傳言的在BETA2中恢復一些VB6的東西,但我并不開心?;蛟S有人說VB有很多的學JAVA(大概學微軟的情況總是很少的,人人都喜歡在實際上嫌貧愛富,在口頭上指點強者,譏嘲弱者得到滿足)但是僅僅一個面向對象足以支撐net計劃么,如果真的是這樣,微軟早就應該讓位于其他軟件商了。就是面向對象,也有一個是不是更強大的區(qū)別,而實際上他是更強大了。
或許你不會去使用他,但是在若于年后,一些新的程序員(在今天或許尚沒有接觸過編程)將掌握一門如此強大的語言。。。。。。。。
我們看看如何的改變:
- Shared Function < System.Runtime.
InteropServices.DLLimport("user32.dll")>- MessageBoxA(ByVal hwnd As Integer,
ByVal text As String, ByVal
lpcaption As String, ByVal
wtype As Integer) As Integer- End Function
首先integer被作為32位數(shù)據(jù)替代了long(long是64位)
System是Net語言中的一個族,System.Runtime.InteropServices是system中的一個類。System.Runtime.InteropServices.DLLimpor是其中的一個方法。調(diào)用DLL的API
接口,這個的意思就是vb6的lib"user32", share是共享的意思,例如:
- Public Class classA
- Shared Function < System.Runtime.
InteropServices.DLLimport("user32.dll")>
MessageBoxA(ByVal h As Integer,
ByVal m As String, ByVal c As
String, ByVal type As Integer) As Integer- End Function
- End Class
你可以這樣調(diào)用 classA.MessageboxA 但是如果沒有這個share 在class后打點就沒有MessageboxA的成員出現(xiàn)了 ,現(xiàn)在你就象以前一樣的使用他吧。
其實上面這個VB.NET函數(shù)調(diào)用方法并不正確,我們?nèi)耘f要使用API聲明,只是換了一各形式
如果你認為這就是VB.NET就錯了,看看這個:
system.WinForms.MessageBox.Show("對話內(nèi)容寫在這里", "標題寫在這里", messagebox.OK BitOr messagebox.IconAsterisk)
這就是面向對象,你已經(jīng)完成了所有的任務。不需要任何的API聲明。不需要寫多余的代碼。
- messagebox.IconAsterisk=驚嘆號圖標
- messagebox.IconError=錯誤圖標
- messagebox.IconExclamation=警告圖標
- messagebox.IconHand=錯誤圖標
- messagebox.IconInformation=提示圖標
所經(jīng)點NET就是打點到達,在族后面打點,在類后面打點,在對象后面打點。第二個問題就是類與類之間相互的關系,Net在網(wǎng)上處理人與人的關系,在程序語言中處理類與類的關系。倒底是加不加share,倒底是類后面打點,還是Dim成一個對象(把他當一個變量吧)再說,是等于class,還是New class.是dim xxx as class=new class 還是dim xxx as new class
就是這樣VB.NET函數(shù)調(diào)用將更簡單,不須要研究一些很難的東西。