每個(gè) Visual Basic 應(yīng)用程序均必須包含一個(gè)稱(chēng)為VB.NET Main過(guò)程。該過(guò)程為應(yīng)用程序的起始點(diǎn)并為應(yīng)用程序提供總體控制。.NET Framework 在已加載應(yīng)用程序并準(zhǔn)備將控制傳遞給它時(shí),將調(diào)用 Main 過(guò)程。除非您要?jiǎng)?chuàng)建 Windows 窗體應(yīng)用程序,否則就必須為自運(yùn)行的應(yīng)用程序編寫(xiě) Main 過(guò)程。
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、科爾沁左翼ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的科爾沁左翼網(wǎng)站制作公司
Main 中包含首先運(yùn)行的代碼。在 Main 中,可以確定在程序啟動(dòng)時(shí)首先加載的窗體,確定系統(tǒng)上是否已在運(yùn)行您的應(yīng)用程序副本,為應(yīng)用程序建立一組變量,或者打開(kāi)應(yīng)用程序需要的數(shù)據(jù)庫(kù)。
VB.NET Main過(guò)程的要求
獨(dú)立運(yùn)行的文件(擴(kuò)展名通常為 .exe)必須包含 Main 過(guò)程。庫(kù)(例如,擴(kuò)展名為 .dll)不獨(dú)立運(yùn)行,因而不需要 Main 過(guò)程??梢詣?chuàng)建的不同類(lèi)型的項(xiàng)目的要求如下:
控制臺(tái)應(yīng)用程序可以獨(dú)立運(yùn)行,而且您必須提供至少一個(gè) Main 過(guò)程。
Windows 窗體應(yīng)用程序可以獨(dú)立運(yùn)行。但是,Visual Basic 編譯器會(huì)在此類(lèi)應(yīng)用程序中自動(dòng)生成一個(gè) Main 過(guò)程,因而您不需要編寫(xiě)此過(guò)程。
類(lèi)庫(kù)不需要 Main 過(guò)程。這些類(lèi)庫(kù)包括 Windows 控件庫(kù)和 Web 控件庫(kù)。作為類(lèi)庫(kù)部署 Web 應(yīng)用程序。
聲明VB.NET Main過(guò)程
有四種方法可以聲明 Main 過(guò)程。它可以使用參數(shù)或不使用參數(shù),可以返回值或不返回值。
注意
如果在類(lèi)中聲明 Main 過(guò)程,則必須使用 Shared 關(guān)鍵字。在模塊中,Main 不必是 Shared。
最簡(jiǎn)單的方法是聲明一個(gè)不使用參數(shù)或不返回值的 Sub 過(guò)程。
Module mainModule
Sub Main()
MsgBox("The Main procedure
is starting the application.")
' Insert call to appropriate
starting place in your code.
MsgBox("The application
is terminating.")
End Sub
End ModuleMain
還可以返回一個(gè) Integer 值,操作系統(tǒng)將其作為程序的退出代碼。其他程序可以通過(guò)檢查 Windows ERRORLEVEL 值來(lái)測(cè)試該代碼。若要返回退出代碼,必須將VB.NET Main過(guò)程聲明為 Function 過(guò)程而不是 Sub 過(guò)程。
Module mainModule
Function Main() As Integer
MsgBox("The Main procedure
is starting the application.")
Dim returnValue As Integer = 0
' Insert call to appropriate
starting place in your code.
' On return, assign appropriate
value to returnValue.
' 0 usually means successful
completion.
MsgBox("The application is
terminating with error level " _
CStr(returnValue) ".")
Return returnValue
End Function
End ModuleMain
還可以采用一個(gè) String 數(shù)組作為參數(shù)。數(shù)組中的每個(gè)字符串均包含一個(gè)用于調(diào)用程序的命令行參數(shù)。您可以根據(jù)它們的值采取不同的操作。
Module mainModule
Function Main(ByVal cmdArgs()
As String) As Integer
MsgBox("The Main procedure is
starting the application.")
Dim returnValue As Integer = 0
' See if there are any arguments.
If cmdArgs.Length 0 Then
For argNum As Integer = 0 To
UBound(cmdArgs, 1)
' Insert code to examine cmdArgs
(argNum) and take
' appropriate action based on its value.
Next argNum
End If
' Insert call to appropriate starting
place in your code.
' On return, assign appropriate
value to returnValue.
' 0 usually means successful completion.
MsgBox("The application is
terminating with error level " _
CStr(returnValue) ".")
Return returnValue
End Function
End Module
可以聲明VB.NET Main過(guò)程來(lái)檢查命令行參數(shù)而不返回退出代碼,如下所示。
Module mainModule
Sub Main(ByVal cmdArgs() As String)
MsgBox("The Main procedure is
starting the application.")
Dim returnValue As Integer = 0
' See if there are any arguments.
If cmdArgs.Length 0 Then
For argNum As Integer = 0 To
UBound(cmdArgs, 1)
' Insert code to examine cmdArgs
(argNum) and take
' appropriate action based on its value.
Next argNum
End If
' Insert call to appropriate
starting place in your code.
MsgBox("The application is
terminating."
End Sub
End Module
調(diào)用過(guò)程,調(diào)用過(guò)程有諸多技巧,它們與過(guò)程的類(lèi)型、位置以及在應(yīng)用程序中的使用方式有關(guān)。下面說(shuō)明如何調(diào)用 Sub 過(guò)程和 Function 過(guò)程。
調(diào)用 Sub 過(guò)程
與 Sub 過(guò)程不同,在表達(dá)式中,Sub 過(guò)程不能用其名字調(diào)用。調(diào)用 Sub 過(guò)程的是一個(gè)獨(dú)立的語(yǔ)句。Sub 過(guò)程還有一點(diǎn)與函數(shù)不一樣,它不會(huì)用名字返回一個(gè)值。但是,與 Function過(guò)程一樣,Sub 過(guò)程也可以修改傳遞給它們的任何變量的值。
調(diào)用 Sub 過(guò)程有兩種方法:
'以下兩個(gè)語(yǔ)句都調(diào)用了名為 MyProc 的 Sub 過(guò)程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意,當(dāng)使用 Call 語(yǔ)法時(shí),參數(shù)必須在括號(hào)內(nèi)。若省略 Call 關(guān)鍵字,則也必須省略參數(shù)兩邊的括號(hào)
調(diào)用函數(shù)過(guò)程
通常,調(diào)用自行編寫(xiě)的函數(shù)過(guò)程的方法和調(diào)用 Visual Basic 內(nèi)部函數(shù)過(guò)程(例如 Abs)的方法一樣;即在表達(dá)式中寫(xiě)上它的名字。
'下面的語(yǔ)句都調(diào)用函數(shù) ToDec。
Print 10 * ToDec
X = ToDec
If ToDec = 10 Then Debug.Print "Out of Range"
X = AnotherFunction ( 10 * ToDec)
就像調(diào)用 Sub 過(guò)程那樣,也能調(diào)用函數(shù)。下面的語(yǔ)句都調(diào)用同一個(gè)函數(shù):
Call Year (Now)
Year Now
當(dāng)用這種方法調(diào)用函數(shù)時(shí),Visual Basic 放棄返回值。
調(diào)用其它模塊中的過(guò)程
在工程中的任何地方都能調(diào)用其它模塊中的公用過(guò)程。可能需要指定這樣的模塊,它包含正在調(diào)用的過(guò)程。調(diào)用其它模塊中的過(guò)程的各種技巧,取決于該過(guò)程是在窗體模塊中、類(lèi)模塊中還是標(biāo)準(zhǔn)模塊中。
窗體中的過(guò)程
所有窗體模塊的外部調(diào)用必須指向包含此過(guò)程的窗體模塊。如果在窗體模塊 Form1 包含 SomeSub 過(guò)程,則可使用下面的語(yǔ)句調(diào)用 Form1 中的過(guò)程:
Call Form1.SomeSub(arguments)
類(lèi)模塊中的過(guò)程
與窗體中調(diào)用過(guò)程類(lèi)似,在類(lèi)模塊中調(diào)用過(guò)程要調(diào)用與過(guò)程一致并且指向類(lèi)實(shí)例的變量。例如,DemoClass 是類(lèi) Class1 的實(shí)例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗體的是,在引用一個(gè)類(lèi)的實(shí)例時(shí),不能用類(lèi)名作限定符。必須首先聲明類(lèi)的實(shí)例為對(duì)象變量(在這個(gè)例子中是 DemoClass )并用變量名引用它。
標(biāo)準(zhǔn)模塊中的過(guò)程
如果過(guò)程名是唯一的,則不必在調(diào)用時(shí)加模塊名。無(wú)論是在模塊內(nèi),還是在模塊外調(diào)用,結(jié)果總會(huì)引用這個(gè)唯一過(guò)程。如果過(guò)程僅出現(xiàn)在一個(gè)地方,這個(gè)過(guò)程就是唯一的。
如果兩個(gè)以上的模塊都包含同名的過(guò)程,那就有必要用模塊名來(lái)限定了。在同一模塊內(nèi)調(diào)用一個(gè)公共過(guò)程就會(huì)運(yùn)行該模塊內(nèi)的過(guò)程。例如,對(duì)于 Module1 和 Module2 中名為 CommonName 的過(guò)程,從 Module2 中調(diào)用 CommonName 則運(yùn)行 Module2 中的 CommonName 過(guò)程,而不是 Module1 中的 CommonName 過(guò)程。
從其它模塊調(diào)用公共過(guò)程名時(shí)必須指定那個(gè)模塊。例如,若在 Module1 中調(diào)用 Module2 中的 CommonName 過(guò)程,要用下面的語(yǔ)句:
Module2.CommonName (arguments)
Public ? 用于聲明對(duì)所有模塊中的所有其它過(guò)程都可以使用的過(guò)程。?
Private ?用于聲明只能在包含該聲明的模塊中使用的過(guò)程。
可以看到PC()函數(shù)是這樣定義的
Public Sub pc(ByVal a%, ByRef d%, ByRef b%).
ByVal是傳遞值 源數(shù)據(jù)不會(huì)被修改,你可以把這個(gè)值當(dāng)作自己的局部變量來(lái)使用;ByRef是傳遞地址,源數(shù)據(jù)可能被修改,你對(duì)這個(gè)變量的操作將對(duì)你傳入的那個(gè)變量產(chǎn)生影響,就像指針的感覺(jué).
------------------------------------------------
而a,b,c初始化分別為2,3,4
a = 2 : b = 3 : c = 4
當(dāng)調(diào)用PC()函數(shù)時(shí)
Call pc(a, b, c) ,此時(shí),相當(dāng)于call pc(2,3,4)
由于PC函數(shù)定義的時(shí)候,d,c是傳遞地址,可以改變,所以此時(shí)d=3,b=4,a不變,還是為2
所以執(zhí)行以下計(jì)算的時(shí)候,
a = a + 1 =2+1=3(注意,執(zhí)行這句操作的時(shí)候,在PC函數(shù)里面a的值改變了為3,影響PC函數(shù)中涉及到a的計(jì)算)
b = b + 2 =4+2=6
c = a + d =3+3=6
------------------------
最后按鈕事件里面還有一個(gè)輸出,
由于a在PC()函數(shù)里面是值傳遞,所以不會(huì)受到影響,故a=2;
b為一個(gè)局部變量,不影響,故b=3;
c=6
--------------
調(diào)試程序的時(shí)候看的有點(diǎn)亂了,也不知道我這樣分析有沒(méi)有錯(cuò),你自己也看看吧,互相學(xué)習(xí)
網(wǎng)站欄目:vb.net的過(guò)程 vbnet with
瀏覽地址:http://www.rwnh.cn/article0/doshcoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站制作、網(wǎng)站改版、自適應(yīng)網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)