新觀念的 VB5 教本

每週一問: 挑戰您的 VB 功力 (初級篇, 98/02/08)


Q: 同樣的副程式, 只有參數的定義不相同, 問呼叫時, 何者比較節省呼叫時間?
Sub SubX( ByVal S As String )
    ...
End Sub
Sub SubX( S As String )
    ...
End Sub
A: Sub SubX( S As String )
..
End Sub

的參數傳遞方式等於 Sub SubX( ByRef S As String ) ... End Sub, 在術語上又稱為「傳址」呼叫, 而對 Windows 而言, 任何資料的位址都佔用 32-bits, 所以不管字串 S 的長度為何, 此一傳遞參數的方式永遠都是傳遞 4 bytes。

Sub SubX( ByVal S As String ) 稱為「傳值」呼叫, 對 VB 而言, 是把 S 字串的所有字元複製一份到副程式 SubX 之中, 所以當 S 越長, 所傳遞的資料就越長。

經過以上的比較, 應該不難瞭解速度上的差異了吧!