自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET數(shù)組賦值怪異現(xiàn)象揭秘

開發(fā) 后端
VB.NET數(shù)組賦值時(shí)出現(xiàn)了一個(gè)比較怪異的現(xiàn)象,就是在進(jìn)行賦值時(shí),是傳給數(shù)組的地址給數(shù)組的。那么如何才能正確解釋這一現(xiàn)象呢?我們?cè)谖闹薪o出了答案。

VB.NET數(shù)組的應(yīng)用是一個(gè)非常重要的知識(shí)點(diǎn)。初學(xué)者們必須要在學(xué)習(xí)的過程中對(duì)此加強(qiáng)注意力。今天在寫程序過程中發(fā)現(xiàn)了VB.NET數(shù)組賦值時(shí)出現(xiàn)了一個(gè)奇怪的現(xiàn)象,就是給數(shù)組給數(shù)組賦值時(shí)竟然是"指向數(shù)組的地址",即數(shù)組給數(shù)組賦值時(shí)不是生成一個(gè)新的值后傳給數(shù)組保存,而是傳給該數(shù)組的地址給數(shù)組.

打個(gè)比方:有數(shù)組A和數(shù)組B.現(xiàn)在把數(shù)組B賦給數(shù)組A.而則時(shí)數(shù)組A不是保存數(shù)組B的值而是保存數(shù)組B的內(nèi)存地址,這就產(chǎn)生一個(gè)問題:如果數(shù)組B的值改變則數(shù)組A的值也跟著改變!!!....而在ASP就不是這樣情況,VB也可能不是這樣,我的機(jī)沒有VB.所以測(cè)試不了...

這樣說可能還不是很清楚(我的表達(dá)能力就是很差),給一段VB.NET數(shù)組賦值的示例代碼就知:

VB.NET數(shù)組賦值的代碼:

  1. Sub TestCode()   
  2. Dim Test(4) As Array, 
    RandomText(1) As String   
  3. Dim Ran As New Random, 
    i, j As Integer   
  4. For i = 0 To 4   
  5. For j = 0 To 1   
  6. RandomText(j) = Ran.Next(100)   
  7. Next   
  8. Test(i) = RandomText   
  9. Next   
  10. For i = 0 To 4   
  11. MsgBox(Test(i)(0) & "|" 
    & Test(i)(1))   
  12. Next   
  13. End Sub  

運(yùn)行上面代碼你可發(fā)現(xiàn),五次顯示的結(jié)果都是一樣的...如果你以為RANDOM時(shí)產(chǎn)生相同的值,那么你可以使用一步步調(diào)試.在"自動(dòng)窗口"中你會(huì)發(fā)現(xiàn)每當(dāng)循環(huán)時(shí),Test(i-1)里面的值總是跟著Test(i)的值改變....這也說明了我在上面所說的問題,即數(shù)組賦值給數(shù)組時(shí)是"傳址"而不是"傳值"保存....但如果不是數(shù)組則不會(huì)有這樣的情況出現(xiàn)!解決方法是把RandomText(1) As String的定義放到***個(gè)循環(huán)的里面即可,即每循環(huán)一次生成一個(gè)新的數(shù)組

讓我們看看在ASP里會(huì)不會(huì)也是跟VB.NET數(shù)組賦值相同的情況吧
ASP代碼:

  1. < %@LANGUAGE="VBSCRIPT"%>   
  2. < %   
  3. Randomize   
  4. Dim Test(4), RandomText(1)   
  5. Dim Ran, i, j   
  6. For i = 0 To 4   
  7. For j = 0 To 1   
  8. RandomText(j) = Int
    (Rnd(Time)*100+1)   
  9. Next   
  10. Test(i) = RandomText   
  11. Next   
  12. For i = 0 To 4   
  13. Response.Write Test(i)(0) & 
    "|" & Test(i)(1) & "
    < br>"   
  14. Next   
  15. %>  

運(yùn)行后你會(huì)發(fā)現(xiàn)5行的數(shù)據(jù)都是不同的!!!即在ASP里數(shù)組賦值給數(shù)組是"傳值"而不是"傳址"保存!!!!

【編輯推薦】

  1. VB.NET自定義屬性應(yīng)用方式解析
  2. VB.NET異常迭代捕捉代碼示例
  3. VB.NET共享成員變量創(chuàng)建技巧解析
  4. 范例解讀VB.NET獲取環(huán)境變量
  5. VB.NET抓取網(wǎng)頁(yè)相關(guān)問題解決方法
責(zé)任編輯:曹凱 來源: blue1000.com
相關(guān)推薦

2010-01-07 13:51:50

VB.NET數(shù)組賦值

2009-10-28 12:28:52

VB.NET資源使用

2010-01-07 15:18:10

VB.NET常量

2009-10-15 11:42:05

VB.Net賦值語(yǔ)句

2009-10-15 09:02:19

VB.NET申明數(shù)組

2009-10-15 09:16:35

VB.NET重新申明數(shù)

2010-01-07 15:25:11

VB.NET數(shù)組

2009-10-21 14:36:03

VB.NET批量重命名

2009-10-09 14:55:02

VB.NET數(shù)組

2010-01-19 15:42:30

VB.NET賦值語(yǔ)句

2010-01-07 16:40:13

VB.NET一維數(shù)組

2009-10-27 09:45:03

VB.NET數(shù)組

2009-10-16 10:47:58

VB.NET創(chuàng)建控件數(shù)

2009-11-02 17:54:44

VB.NET數(shù)組

2009-10-27 14:50:25

VB.NET控件數(shù)組

2010-01-18 19:29:31

VB.NET多維數(shù)組

2009-10-26 14:25:09

VB.NET控件數(shù)組

2011-06-17 11:05:22

VB.NET

2009-06-24 15:45:32

VB.NET

2010-01-19 14:18:39

VB.NET參數(shù)數(shù)組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)