事實上,在B =陣列(...)數(shù)組參數(shù)短語的主要問題是2,5,3,所以這些整數(shù)數(shù)組()函數(shù)的返回值類型的一個變種,而不是塑料。在指定的子數(shù)組參數(shù)的定義是一個整數(shù),導(dǎo)致類型不匹配錯誤。
榕江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
使用下面的方法解決這個問題:
定義函數(shù)的參數(shù)類型,
。私人小組代碼(1為ByRef(帶),作為字符串BYVAL myStr中)
你提到的原因,后的ByRef參數(shù)類型不匹配,因為默認(rèn)情況下是作為一個參數(shù)傳遞的函數(shù)地址,你的第二個參數(shù)myStr的前面不限制轉(zhuǎn)讓其參數(shù),系統(tǒng),與前一個()相同的地址,已成為通過輕輕是一個錯誤,只要在前面加1 BYVAL。
后的代碼如下(調(diào)試通過):
選項??基地1
。私人小組代碼(1為ByRef(帶),作為字符串BYVAL myStr中)
??作為字符串昏暗的通道,C1為字符串
?N = UBound的(一) - LEN(myStr中)
?如果N 0?
???myStr的= myStr的字符串$(“*”)
??結(jié)束如果
??CH = myStr的
??對于k = 1,UBound的(一)
???C1 = MID(myStr中,K,1)
???N = A(K)
???中$(CH,N)= C1
K-?
??myStr的= CH
?打印myStr的?
END SUB
私人小組Command1_Click()
昏暗的b()
B =陣列(2,5,3,7,6,1,4)
MYNAME =“克萊門特”
調(diào)用的代碼(二MYNAME)
END SUB
這里覺得沒有區(qū)別,是因為在SubAddRow 里,我們并沒有試圖改變形參 t 本身,我們所做的改變都是 t.Rows,我們?yōu)?t 添加了行。
對于形參和實參而言,在ByVal 模式下 temTable 和 t 指向了同一塊內(nèi)存,但是這兩個變量本身并不在同一個地址上。在改變 t.Rows時,由于二者都指向同一塊內(nèi)存,所以更改了t.Rows里的行數(shù)據(jù);
在ByRef模式下,temTable 和 t 就是同一塊內(nèi)存,二者在一個地址上,肯定也就指向同一塊內(nèi)存,在改變 t.Rows時,就是對 temTable 的改變。
在此舉個例子:假設(shè)我們需要將 temTable 清空,那么我們還是以 t 作為形參,我們可以這樣寫:
'?ByVal?方式傳參
Private?Sub?ClearRow(ByVal?t?As?DataTable)
t?=?Nothing
End?Sub
'?ByRef?方式傳參
Private?Sub?ClearRow(ByRef?t?As?DataTable)
t?=?Nothing
End?Sub
'?并且這樣調(diào)用
Private?Sub?Button3_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button3.Click
ClearRow(temTable)
DataGridView1.DataSource?=?temTable
End?Sub
這樣,就是有區(qū)別的了。ByVal方式時,雖然 t 被置為 Nothing ,但是由于 t 和 temTable 并不是一個變量,并不在同一個地址上,所以 temTable 沒有變。
而 ByRef 時,t 和 temTable 就是同一個變量,在同一個地址上,t = Nothing的同時,temTable 也就是Nothing了。
如果這個解釋還不清楚,可以追問。
括號里只能傳參數(shù),不能傳過程和函數(shù),形參的參數(shù)類型按需要寫,不知道該寫啥就不寫,但是不寫容易出錯
你想在過程B內(nèi)部調(diào)用A過程,直接call A就行