快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

 

一直以来在 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






返回类别: 教程
上一教程: 十天学会ASP.net(2)
下一教程: asp+中的session 的使用和原理() 不需要cookie也可以使用session

您可以阅读与".Net 下区别使用 ByRef/ByVal 的重要性"相关的教程:
· 微软.NET平台中类型使用的基本原理
· COM, COM+ and .NET 的区别(转)
· 使用CodeDom开发基于B/S的.NET+MSSQL代码生成器的随感
· .NET Framework中使用XML Web Service(2)
· 使用.NET CF开发Smartphone应用程序 FAQ
    微笑服务 优质保证 索取样品