这篇文章介绍了
Net 下区别使用 ByRef/ByVal 的重要性
有需要的朋友可以参考一下
一直以来在 VB 下参数默认都是按照 ByRef 传送的(即按地址传送)
而在 Net(C#VBNet) 下 参数默认是使用 ByVal (即按值传送) 传送的一直没怎么注意
这些天在优化程序时发现 当传送 大变量时使用默认方式(ByVal) 效率相当低
如传入的参数变量类型 是 大字符串数组集合DataSet 等
测试的关键代码如下我传入的字符串并没有特别大变量越大使用 ByRef 效率越高当然当传入得变量可以被修改或无其他作用时可以改用 ByRef 传
复制代码 代码如下:
Private Declare Function GetTickCount Lib "kernel" () As Int
Private Function TestByRef(ByRef aa As String) As String
aa = "" & aa
TestByRef = aa
End Function
Private Function TestByVal(ByVal aa As String) As String
aa = "" & aa
TestByVal = aa
End Function
Private Sub Button_Click(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handles ButtonClick
Dim teststr As String
Dim Newstr As String
Dim t As Int
Dim II As Int
teststr = "wosdfsdfdsfdsfsfdsfsfsfsfsfsfdsfdsfcvxcvxcvcxvvcxvvvxvcvxv"
t = GetTickCount
For II = To
Newstr = TestByRef(teststr)
Next
MsgBox("ByRef " & CStr(GetTickCount t))
t = GetTickCount
For II = To
Newstr = TestByVal(teststr)
Next
MsgBox("ByVal " & CStr(GetTickCount t))
End Sub