Visualbaisc中Byval與Byref的區(qū)別

字號(hào):

1、引用參數(shù)(ref)在可以作為引用參數(shù)在函數(shù)成員調(diào)用中傳遞之前,必須已明確賦值,而輸出參數(shù)(out)在可以作為輸出參數(shù)在函數(shù)成員調(diào)用中傳遞之前不一定要明確賦值,在該函數(shù)成員正常返回前都必須已明確賦值。
    2、在函數(shù)內(nèi)部,引用參數(shù)(ref)被視為初始已賦值,輸出參數(shù)(out)被視為初始未賦值。
    3、默認(rèn)地,VB中的所有參數(shù)都是值傳遞。只有在參數(shù)的修飾符中明確包含out或ref,才是引用傳遞。但是需要知道的是,當(dāng)參數(shù)的類(lèi)型是引用類(lèi)型時(shí),你傳遞的是一個(gè)對(duì)象的引用而不是實(shí)際的對(duì)象。
    實(shí)例:
    sub Add1(ByVal no as int32)
    no=no+100
    end sub
    sub Add2(ByRef no as int32)
    no=no+100
    end sub
    private sub button1_click(sender as object,e as eventargs)handles button1.click
    dim a as int32
    a=100
    Add1(a)
    msgbox ("a的值為:" & a) '顯示:a的值為100
    Add2(a)
    msgbox ("a的值為:" & a) '顯示:a的值為200,因?yàn)锳dd2中的參數(shù)no為ByRef,即
    '按地址傳遞,因此在Add2中對(duì)no進(jìn)行修改后,將會(huì)導(dǎo)致
    '源參數(shù)a的值也被修改。
    End Sub
    ByVal是傳遞值 源數(shù)據(jù)不會(huì)被修改,你可以把這個(gè)值當(dāng)作自己的局部變量來(lái)使用;ByRef是傳遞地址,源數(shù)據(jù)可能被修改,你對(duì)這個(gè)變量的操作將對(duì)你傳入的那個(gè)變量產(chǎn)生影響,就像指針的感覺(jué)。