正如我們?cè)谏弦徽轮刑岬降?,Sub過(guò)程是不返回任何值的過(guò)程。 我們?cè)谒械睦又幸恢笔褂肧ub過(guò)程Main。 到目前為止,我們已經(jīng)在這些教程中編寫控制臺(tái)應(yīng)用程序。 當(dāng)這些應(yīng)用程序開始時(shí),控制轉(zhuǎn)到主子程序,它反過(guò)來(lái)運(yùn)行構(gòu)成程序主體的任何其他語(yǔ)句。
Sub語(yǔ)句用于聲明子過(guò)程的名稱,參數(shù)和主體。 Sub語(yǔ)句的語(yǔ)法是:
[Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub
Modifiers 修飾符 :指定過(guò)程的訪問(wèn)級(jí)別;可能的值有:Public, Private, Protected, Friend, Protected Friend and information regarding overloading, overriding, sharing, and shadowing.
SubName 子名 :表示該子的名字
ParameterList 參數(shù)列表 :指定參數(shù)的列表
Sub CalculatePay(ByRef hours As Double, ByRef wage As Decimal) 'local variable declaration Dim pay As Double pay = hours * wage Console.WriteLine("Total Pay: {0:C}", pay) End Sub Sub Main() 'calling the CalculatePay Sub Procedure CalculatePay(25, 10) CalculatePay(40, 20) CalculatePay(30, 27.5) Console.ReadLine() End Sub End Module
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Total Pay: $250.00 Total Pay: $800.00 Total Pay: $825.00
這是將參數(shù)傳遞給方法的默認(rèn)機(jī)制。 在這種機(jī)制中,當(dāng)調(diào)用方法時(shí),為每個(gè)值參數(shù)創(chuàng)建一個(gè)新的存儲(chǔ)位置。 實(shí)際參數(shù)的值被復(fù)制到它們中。 因此,對(duì)方法中的參數(shù)所做的更改對(duì)參數(shù)沒(méi)有影響。
在VB.Net中,可以使用ByVal關(guān)鍵字聲明引用參數(shù)。 下面的例子演示了這個(gè)概念:
Module paramByval Sub swap(ByVal x As Integer, ByVal y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200
它表明,雖然它們?cè)诤瘮?shù)內(nèi)部已更改,但值中沒(méi)有變化。
引用參數(shù)是對(duì)變量的存儲(chǔ)器位置的引用。 當(dāng)您通過(guò)引用傳遞參數(shù)時(shí),與值參數(shù)不同,不會(huì)為這些參數(shù)創(chuàng)建新的存儲(chǔ)位置。 參考參數(shù)表示與提供給該方法的實(shí)際參數(shù)相同的存儲(chǔ)器位置。
在VB.Net中,可以使用ByRef關(guān)鍵字聲明引用參數(shù)。 以下示例演示了這一點(diǎn):
Module paramByref Sub swap(ByRef x As Integer, ByRef y As Integer) Dim temp As Integer temp = x ' save the value of x x = y ' put y into x y = temp 'put temp into y End Sub Sub Main() ' local variable definition Dim a As Integer = 100 Dim b As Integer = 200 Console.WriteLine("Before swap, value of a : {0}", a) Console.WriteLine("Before swap, value of b : {0}", b) ' calling a function to swap the values ' swap(a, b) Console.WriteLine("After swap, value of a : {0}", a) Console.WriteLine("After swap, value of b : {0}", b) Console.ReadLine() End Sub End Module
當(dāng)上述代碼被編譯和執(zhí)行時(shí),它產(chǎn)生了以下結(jié)果:
Before swap, value of a : 100 Before swap, value of b : 200 After swap, value of a : 200 After swap, value of b : 100
更多建議: