2017年9月14日 星期四

[VB6] ByVal,ByRef 傳遞變數到副程式的差別


以 ByVal 傳遞變數
描述以傳'值'方式傳遞引數,這表示程序不能修改變數本身

以 ByRef 傳遞引數
描述以傳'址'方式傳遞引數,這表示程序可以修改變數本身


ex
開啟一個標準執行檔,並在畫面中拉出一個按鈕
之後打入以下程式碼
-----------------------------------------------------------------
Option Explicit
'按鈕按下去觸發的事件
Private Sub Command1_Click()
    Dim X1   As String
    Dim X2   As String
 
    X1 = "哈哈"
    X2 = "哼哼"
    '呼叫副程式,並且把值導入
    Call TEXTA(X1, X2)
 
    '秀出畫面
    MsgBox X1 & " / " & X2
End Sub

'自訂副程式
Private Sub TEXTA(ByVal A1 As String, ByRef A2 As String)
    '將導入的值重新定義
    A1 = "1"
    A2 = "2"
End Sub
-----------------------------------------------------------------

執行後就會發現很明顯的差別
畫面會呈現 "哈哈 / 2" 這個結果

由此就可以知道在副程式中
A1是將 X1值 指定到 A1這個變數中,在副程序中A1如何改變都不會影響母體
A2是將 X2址 指定到 A2這個代號中,可以理解在副程序中 A2就等同於X2, A2只要有改變都會回饋到X2

沒有留言:

張貼留言