Q: | 同樣的副程式, 只有參數的定義不相同, 問呼叫時, 何者比較節省呼叫時間?
|
||
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 越長, 所傳遞的資料就越長。 經過以上的比較, 應該不難瞭解速度上的差異了吧! |