byval和byref舉個(gè)例子 vb中byval和byref的區(qū)別?
vb中byval和byref的區(qū)別?ByVal是值傳遞,byref是引用傳遞。Byref是VB6中的默認(rèn)值。如果您有以下兩個(gè)函數(shù)那么如果您有以下代碼:輸出將是:因?yàn)閠est2將修改I的值(對(duì)應(yīng)于函數(shù)的
vb中byval和byref的區(qū)別?
ByVal是值傳遞,byref是引用傳遞。Byref是VB6中的默認(rèn)值。如果您有以下兩個(gè)函數(shù)
那么如果您有以下代碼:輸出將是:因?yàn)閠est2將修改I的值(對(duì)應(yīng)于函數(shù)的內(nèi)部變量名a)。需要特別注意的是:byref是VB6中的默認(rèn)值。如果參數(shù)類型不匹配,可能會(huì)出現(xiàn)無(wú)法解釋的錯(cuò)誤,因?yàn)閂B會(huì)嘗試轉(zhuǎn)換,但這種轉(zhuǎn)換可能有風(fēng)險(xiǎn)。為了代碼的可靠性,請(qǐng)盡可能多地使用ByVal,除非您確定byref使用正確。
vb中默認(rèn)的是byval還是byref?
ByVal和ByVal(按值)
byref(按地址)
這樣我們可以理解為:
過程中的參數(shù)列表,我們稱之為形式參數(shù)
調(diào)用過程時(shí)的參數(shù)列表,我們稱之為實(shí)際參數(shù)
調(diào)用過程時(shí),我們需要將實(shí)際參數(shù)的值傳遞給形式參數(shù),然后,在傳遞過程中,有兩種傳遞方法
傳遞值(ByVal)時(shí),為形式參數(shù)打開一個(gè)臨時(shí)地址,將實(shí)際參數(shù)的內(nèi)容傳遞到臨時(shí)地址。這樣,傳遞后,形式參數(shù)和實(shí)際參數(shù)在兩個(gè)不同的地址,也就是說,它們相互獨(dú)立
傳遞值(byref)時(shí),就是把實(shí)際參數(shù)的地址直接傳遞給參數(shù),使參數(shù)和參數(shù)共享同一個(gè)地址。因此,參數(shù)內(nèi)容的改變直接改變了參數(shù)的內(nèi)容
通過以上分析,您只需要記?。寒?dāng)傳遞值(ByVal)時(shí),參數(shù)的改變不會(huì)影響參數(shù)
當(dāng)傳遞地址(byref)時(shí),參數(shù)的改變會(huì)影響參數(shù)
當(dāng)在應(yīng)用中,我們可以使用基于地址的傳輸示例:
dim a as integer,B as integer
a=1
B=2
Call AAA(a,B)
print a,B“結(jié)果是23(形式參數(shù)的變化影響實(shí)際參數(shù))
Call BBB(a,B)
pring a,B”結(jié)果與上面相同,23(形式參數(shù)的變化不影響實(shí)際參數(shù))不影響實(shí)際參數(shù))
sub AAA(I為整數(shù),j為整數(shù))“默認(rèn)按地址傳遞
I=I 1
j=j 1
end sub
sub BBB(ByVal I為整數(shù),ByVal j為整數(shù))
I=I 1
j=j 1
end sub
byref:按地址傳遞(byref)是指主程序直接向子流程(流程中定義的傳輸方法),在流程中修改、調(diào)試并返回給主程序,主程序輸出修改后的值。例如,如果在參數(shù)中設(shè)置byref,則可以更改byref的值。ByVal:ByVal的意思是將主程序(副本)的值傳遞給子進(jìn)程。當(dāng)進(jìn)程對(duì)副本進(jìn)行操作時(shí),主程序的輸出仍然是原始值。如果要輸出傳遞的值,可以在子進(jìn)程中設(shè)置輸出。例如:如果在參數(shù)中設(shè)置byref,則無(wú)法更改byref的值,而只能更改其副本。這沒有任何意義。下面是一個(gè)示例:
sub test(byref a as integer,ByVal B as integer)“注意,a按地址傳遞,B按值傳遞,a=3B=4end sub”這里是主程序sub main()dim a as integerdim B as Integera=1b=2測(cè)試(a,b) msgbox(“a=”&a&b=“&b)End Sub
運(yùn)行上述代碼的結(jié)果是a=3B=2
這表明byref可以更改傳入值,但ByVal不能
如果主題學(xué)習(xí)了C/C:ByVal是值傳遞,byref是引用傳遞。Byref是VB6中的默認(rèn)值。如果您有以下兩個(gè)函數(shù)
那么如果您有以下代碼:輸出將是:因?yàn)閠est2將修改I的值(對(duì)應(yīng)于函數(shù)的內(nèi)部變量名a)。需要特別注意的是:byref是VB6中的默認(rèn)值。如果參數(shù)類型不匹配,可能會(huì)出現(xiàn)無(wú)法解釋的錯(cuò)誤,因?yàn)閂B會(huì)嘗試轉(zhuǎn)換,但這種轉(zhuǎn)換可能有風(fēng)險(xiǎn)。為了代碼的可靠性,請(qǐng)盡可能多地使用ByVal,除非您確定byref使用正確。