
- VB.Net 基礎教程
- VB.Net - 首頁
- VB.Net - 概述
- VB.Net - 環境設定
- VB.Net - 程式結構
- VB.Net - 基本語法
- VB.Net - 資料型別
- VB.Net - 變數
- VB.Net - 常量
- VB.Net - 修飾符
- VB.Net - 語句
- VB.Net - 指令
- VB.Net - 運算子
- VB.Net - 決策制定
- VB.Net - 迴圈
- VB.Net - 字串
- VB.Net - 日期和時間
- VB.Net - 陣列
- VB.Net - 集合
- VB.Net - 函式
- VB.Net - 子程式
- VB.Net - 類和物件
- VB.Net - 異常處理
- VB.Net - 檔案處理
- VB.Net - 基本控制元件
- VB.Net - 對話方塊
- VB.Net - 高階窗體
- VB.Net - 事件處理
- VB.Net 高階教程
- VB.Net - 正則表示式
- VB.Net - 資料庫訪問
- VB.Net - Excel 表格
- VB.Net - 傳送郵件
- VB.Net - XML 處理
- VB.Net - Web程式設計
- VB.Net 有用資源
- VB.Net - 快速指南
- VB.Net - 有用資源
- VB.Net - 討論
VB.Net - 子程式
正如我們在上一章中提到的,子程式是不返回值的程式。在我們所有的示例中,我們一直在使用子程式 Main。到目前為止,在這些教程中,我們一直在編寫控制檯應用程式。當這些應用程式啟動時,控制權將轉到 Main 子程式,然後依次執行構成程式主體的任何其他語句。
定義子程式
Sub 語句用於宣告子程式的名稱、引數和主體。Sub 語句的語法如下:
[Modifiers] Sub SubName [(ParameterList)] [Statements] End Sub
其中:
修飾符 − 指定程式的訪問級別;可能的值包括 - Public、Private、Protected、Friend、Protected Friend 以及有關過載、重寫、共享和隱藏的資訊。
子程式名 − 指示 Sub 的名稱
引數列表 − 指定引數列表
示例
以下示例演示了一個子程式 CalculatePay,它接受兩個引數 hours 和 wages,並顯示員工的總工資:
Module mysub 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
編譯並執行上述程式碼後,將產生以下結果:
Total Pay: $250.00 Total Pay: $800.00 Total Pay: $825.00
按值傳遞引數
這是向方法傳遞引數的預設機制。在這種機制中,當呼叫方法時,將為每個值引數建立一個新的儲存位置。實際引數的值將複製到其中。因此,對方法內部引數所做的更改不會影響引數。
在 VB.Net 中,您可以使用ByVal關鍵字宣告引用引數。以下示例演示了此概念:
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
編譯並執行上述程式碼後,將產生以下結果:
Before swap, value of a :100 Before swap, value of b :200 After swap, value of a :100 After swap, value of b :200
它表明儘管值在函式內部已更改,但值並沒有改變。
按引用傳遞引數
引用引數是變數記憶體位置的引用。當您按引用傳遞引數時,與值引數不同,不會為這些引數建立新的儲存位置。引用引數表示與提供給方法的實際引數相同的記憶體位置。
在 VB.Net 中,您可以使用ByRef關鍵字宣告引用引數。以下示例演示了這一點:
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
編譯並執行上述程式碼後,將產生以下結果:
Before swap, value of a : 100 Before swap, value of b : 200 After swap, value of a : 200 After swap, value of b : 100
廣告