国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.Net 下區別使用 ByRef/ByVal 的重要性

2024-07-10 12:58:57
字體:
來源:轉載
供稿:網友
 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开远市| 迭部县| 大兴区| 河南省| 灵石县| 尼勒克县| 石首市| 来凤县| 天等县| 远安县| 惠来县| 罗定市| 寻乌县| 博爱县| 化州市| 宝兴县| 方山县| 彩票| 公主岭市| 黑龙江省| 碌曲县| 贵溪市| 涟源市| 顺昌县| 三穗县| 鄂尔多斯市| 庆阳市| 栾城县| 清原| 阿拉善右旗| 邹城市| 安康市| 茌平县| 铁岭县| 旅游| 稷山县| 肇东市| 报价| 会东县| 武邑县| 南雄市|