·您的位置: 首页 » 资源教程 » 编程开发 » ASP.NET » .Net 下区别使用 ByRef/ByVal 的重要性

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

类别: ASP.NET教程  评论数:0 总得分:0
 

一直以来在 VB6 下,参数默认都是按照 ByRef  传送的,(即按地址传送)

而在 .Net(C#,VB.Net) 下, 参数默认是使用 ByVal (即按值传送)  传送的,一直没怎么注意。

这些天在优化程序时发现 当传送 大变量时,使用默认方式(ByVal) 效率相当低

如传入的参数变量类型 是 大字符串,数组,集合,DataSet 等

测试的关键代码如下,我传入的字符串并没有特别大,变量越大,使用 ByRef 效率越高,当然,当传入得变量可以被修改或无其他作用时,可以改用 ByRef 传

 Private Declare Function GetTickCount Lib \"kernel32\" () As Int32


    Private Function TestByRef(ByRef aa As String) As String
        aa = \"1\" & aa
        TestByRef = aa

    End Function


    Private Function TestByVal(ByVal aa As String) As String
        aa = \"1\" & aa
        TestByVal = aa

    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim teststr As String
        Dim Newstr As String

        Dim t As Int32
        Dim II As Int32


        teststr = \"wosdfsdfdsfdsfsfdsfsfsfsfsfsfdsfdsfcvxcvxcvcxvvcxvvvxvcvxv\"

        t = GetTickCount

        For II = 1 To 10000
            Newstr = TestByRef(teststr)
        Next

        MsgBox(\"ByRef  \" & CStr(GetTickCount - t))


        t = GetTickCount


        For II = 1 To 10000
            Newstr = TestByVal(teststr)
        Next


        MsgBox(\"ByVal  \" & CStr(GetTickCount - t))

    End Sub





-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1