国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

VB.NET里奇怪的數組賦值現象

2024-07-10 13:00:57
字體:
來源:轉載
供稿:網友
今天在寫程序過程中發現了.net里的一個奇怪現象,就是給數組給數組賦值時竟然是"指向數組的地址",即數組給數組賦值時不是生成一個新的值后傳給數組保存,而是傳給該數組的地址給數組.打個比方:有數組a和數組b.現在把數組b賦給數組a.而則時數組a不是保存數組b的值而是保存數組b的內存地址,這就產生一個問題:如果數組b的值改變則數組a的值也跟著改變!!!....而在asp就不是這樣情況,vb也可能不是這樣,我的機沒有vb.所以測試不了...

這樣說可能還不是很清楚(我的表達能力就是很差),給一段示例代碼就知:
vb.net的代碼:
sub testcode()
dim test(4) as array, randomtext(1) as string
dim ran as new random, i, j as integer
for i = 0 to 4
for j = 0 to 1
randomtext(j) = ran.next(100)
next
test(i) = randomtext
next
for i = 0 to 4
msgbox(test(i)(0) & "|" & test(i)(1))
next
end sub
運行上面代碼你可發現,五次顯示的結果都是一樣的...如果你以為random時產生相同的值,那么你可以使用一步步調試.在"自動窗口"中你會發現每當循環時,test(i-1)里面的值總是跟著test(i)的值改變....這也說明了我在上面所說的問題,即數組賦值給數組時是"傳址"而不是"傳值"保存....但如果不是數組則不會有這樣的情況出現!解決方法是把randomtext(1) as string的定義放到第一個循環的里面即可,即每循環一次生成一個新的數組

讓我們看看在asp里會不會也是相同的情況吧
asp代碼:
<%@language="vbscript"%>
<%
randomize
dim test(4), randomtext(1)
dim ran, i, j
for i = 0 to 4
for j = 0 to 1
randomtext(j) = int(rnd(time)*100+1)
next
test(i) = randomtext
next
for i = 0 to 4
response.write test(i)(0) & "|" & test(i)(1) & "<br>"
next
%>
運行后你會發現5行的數據都是不同的!!!即在asp里數組賦值給數組是"傳值"而不是"傳址"保存!!!!


.net怎么變了??很多東西都變了...變得習慣了還是不習慣了?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 都安| 中宁县| 利津县| 昌宁县| 米易县| 河东区| 北海市| 锡林浩特市| 湖北省| 武穴市| 安化县| 义乌市| 万全县| 岳普湖县| 报价| 措美县| 荆门市| 新源县| 漯河市| 怀远县| 汉源县| 湖北省| 乐业县| 白玉县| 陇川县| 仁怀市| 海丰县| 咸阳市| 灵武市| 科尔| 大足县| 绵竹市| 玉环县| 临西县| 阿城市| 东丽区| 东乡| 馆陶县| 内乡县| 太湖县| 葫芦岛市|