值傳遞和地址傳遞(引用)的而導(dǎo)致的問(wèn)題。
網(wǎng)站的建設(shè)創(chuàng)新互聯(lián)建站專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開(kāi)發(fā).小程序定制開(kāi)發(fā),H5頁(yè)面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為衛(wèi)生間隔斷等企業(yè)提供專業(yè)服務(wù)。
在For Each 的時(shí)候
當(dāng)對(duì)象是值對(duì)象的時(shí)候,等于獲得到一個(gè)副本。
當(dāng)對(duì)象是引用對(duì)象的時(shí)候,則是獲得到一個(gè)指針。
而在For To 的時(shí)候
無(wú)論對(duì)象是什么,你都獲得到這個(gè)集合指定位置的指針。
更詳細(xì)的,可以請(qǐng)參考以下內(nèi)容,或直接去官方的MSDN了解
關(guān)于值類型和引用類型:
如果數(shù)據(jù)類型在它自己的內(nèi)存分配中存儲(chǔ)數(shù)據(jù),則該數(shù)據(jù)類型就是“值類型”?!耙妙愋汀卑赶虼鎯?chǔ)數(shù)據(jù)的其他內(nèi)存位置的指針。
值類型
值類型包括:
所有數(shù)字?jǐn)?shù)據(jù)類型
Boolean、Char 和 Date
所有結(jié)構(gòu),即使其成員是引用類型
枚舉,因?yàn)槠浠A(chǔ)類型總是 SByte、Short、Integer、Long、Byte、UShort、UInteger
或 ULong
引用類型
引用類型包括:
String
所有數(shù)組,即使其元素是值類型
類類型,如 Form
委托
非類型的元素
以下編程元素未限定為類型,因?yàn)槟鸁o(wú)法將它們中的任何一個(gè)指定為聲明元素的數(shù)據(jù)類型:
命名空間
模塊
事件
屬性和過(guò)程
變量、常數(shù)和字段
使用對(duì)象數(shù)據(jù)類型
可以將引用類型或值類型指派給 Object 數(shù)據(jù)類型的變量。Object
變量總是存儲(chǔ)指向數(shù)據(jù)的指針,從不存儲(chǔ)數(shù)據(jù)本身。然而,如果將值類型指派給 Object 變量,則 Object
變量將表現(xiàn)得像存儲(chǔ)自己的數(shù)據(jù)一樣。有關(guān)更多信息,請(qǐng)參見(jiàn) Object 數(shù)據(jù)類型。
通過(guò)將 Object 變量傳遞給 Microsoft.VisualBasic
命名空間中 Information
類的 IsReference
方法,可以確定該變量是用作引用類型還是值類型。如果 Object 變量的內(nèi)容表示引用類型,則 Information.IsReference 返回 True。
For Each num 這個(gè) num 是只讀的,不能修改;如果要修改,改成用 For 循環(huán)。
希望能幫助到你
for each是用來(lái)簡(jiǎn)化for的,但你這種寫法有點(diǎn)奇怪,一般沒(méi)這樣用的,通常的用法是
dim a() as string={....}
dim str as string '定義臨時(shí)變量,它的類型與你數(shù)組中元素類型一致
For Each str In a
MessageBox.Show(str)
Next
你上面代碼中,a就是一個(gè)3個(gè)元素的數(shù)組,從a[0]到a[2], 用for each的時(shí)候,就會(huì)遍歷你的a數(shù)組,上面的代碼相當(dāng)于
for i=0 to a.Length-1
MessageBox.Show(a(i))
next
字符串也可以遍歷,估計(jì)只要有GetEnumerator方法的都可以這么遍歷。字符串是遍歷每個(gè)字符。如:
For Each m As String In "abc456456434"
Console.WriteLine(m)
Next
也不會(huì)有錯(cuò)。
所以語(yǔ)法上不會(huì)有錯(cuò),如果你的語(yǔ)句是遍歷數(shù)組而不是數(shù)組第一個(gè)元素中的字符,那就把后面的(1)去掉。