c#

位置:IT落伍者 >> c# >> 浏览文章

.Net 下区别使用 ByRef/ByVal 的重要性


发布日期:2021年09月29日
 
.Net 下区别使用 ByRef/ByVal 的重要性
这篇文章介绍了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

上一篇:如何在不同.net版本实现单点登录

下一篇:.NET Compact Framework 的类库信息